powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
47 сообщений из 47, показаны все 2 страниц
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787029
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос1 подскажите как организовать передачу сообщений между ними. на клиенте есть события Update(при отрисовке) и OnGUI(при действиях пользователя я так понял). При Update должен получать сообщения от сервера и корректировать обстановку, а при OnGUI отправлять сообщения серверу о действиях клиента(новые координаты).
Вопрос2 не будет ли корректировка обстановки опять вызывать Update() при которой опять будет происходить корректировка обстановки и т.д.
Вопрос3 правильно ли организован сервер?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
int main(void)
{
    WORD sockVer;
    WSADATA wsaData;
    long int retVal;
 
    sockVer = MAKEWORD(2,2);
 
    WSAStartup(sockVer, &wsaData);
 
    //??????? ?????
    SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if(servSock == INVALID_SOCKET)
    {
        printf("Unable to create socket\n");
        WSACleanup();
        return SOCKET_ERROR;
    }
	SOCKADDR_IN sin;
    sin.sin_family = PF_INET;
    sin.sin_port = htons(90);
    sin.sin_addr.s_addr = INADDR_ANY;
    SOCKET clientSock;
 

    retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
    if(retVal == SOCKET_ERROR)
    {
        printf("Unable to bind\n");
        WSACleanup();
        return SOCKET_ERROR;
    }
 
    //???????? ?????? ??????? ?????
    retVal = listen(servSock, 10);
    if(retVal == SOCKET_ERROR)
    {
        printf("Unable to listen\n");
        WSACleanup();
        return SOCKET_ERROR;
    }
    //???? ???????
 clientSock = accept(servSock, NULL, NULL);
    
    if(clientSock == INVALID_SOCKET)
    {
        printf("Unable to accept\n");
        WSACleanup();
        return SOCKET_ERROR;
    }
 
    char szReq[1024]; 
 while(todo){
    retVal = recv(clientSock, szReq, 1024, 0);
.....
s1=myparse(szReq);
.....
    if(retVal == SOCKET_ERROR)
    {
        printf("Unable to recv\n");
        return SOCKET_ERROR;
    }
    char *szResp = "Response";
    
  
    

 
    if(retVal == SOCKET_ERROR)
    {
        printf("Unable to send\n");
        return SOCKET_ERROR;
    }

    retVal = send(clientSock, s1.c_str(), s1.length(), 0);
    
    ZeroMemory(szReq,1024);
    
}
    closesocket(clientSock);
    closesocket(servSock);
 
    WSACleanup();
    

    system("PAUSE");
    return EXIT_SUCCESS;



Вопрос4 ну и клиент?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
void Awake(){
		ip = "127.0.0.1";
		//ip = "37.151.21.7";
		port = 90;
		s = "";
		ss = "";
		localEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
		// Create a TCP/IP socket.
		client1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
		try{
			client1.Connect (localEndPoint);
			Debug.Log ("Connected");
		}
		catch{
			Debug.Log("Can't connect");		
		}
....
}

void Update () {
		byte[] Buffer;
		string data = "";
		Buffer = Encoding.ASCII.GetBytes(data);
		Array.Clear (Buffer,0, Buffer.Length);
		client1.Receive (Buffer);
		data = Encoding.ASCII.GetString (Buffer);
		//Debug.Log (data);
		s = s + data;
		.....

		if (ss != "") {
				
			myparse (ss);
		}
		
		Array.Clear (Buffer,0, Buffer.Length);
		}

	void OnGUI () {
		byte[] Buffer;
		string data;
		
		
		data = "begin \n";
		Buffer = Encoding.ASCII.GetBytes(data);
		client1.Send (Buffer);
		
		Array.Clear (Buffer,0, Buffer.Length);
		
		data = "player " + Player1.transform.localPosition.x.ToString () + " " +
			Player1.transform.localPosition.y.ToString () + " " +
				Player1.transform.localPosition.z.ToString () + " \n";
		Buffer = Encoding.ASCII.GetBytes(data);
		client1.Send (Buffer);
		

		Array.Clear (Buffer,0, Buffer.Length);	
		data = "the_end \n";
		Buffer = Encoding.ASCII.GetBytes(data);
		client1.Send (Buffer);
		
		Array.Clear (Buffer,0, Buffer.Length);		

	}



Все это работает сек 20-30 и затем останавливается пока не выключу сервер
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787035
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я забыл сказать что работает оно только на сервере.т.е сервер принимает сообщения и обрабатывает их и отправляет назад.а вот на клиенте уже не обрабатываются
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787292
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,


Вопрос1 подскажите как организовать передачу сообщений между ними. на клиенте есть события Update(при отрисовке) и OnGUI(при действиях пользователя я так понял). При Update должен получать сообщения от сервера и корректировать обстановку, а при OnGUI отправлять сообщения серверу о действиях клиента(новые координаты).


По любому из существующих протоколов общения.
Например, по XMPP (сложный).
Или STOMP (очень простой).



Вопрос2 не будет ли корректировка обстановки опять вызывать Update() при которой опять будет происходить корректировка обстановки и т.д.

Это уже другие проблемы.


Вопрос3 правильно ли организован сервер?


Ээээ.. проверим.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787295
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде клиента ничего не понял, там полный бред какой-то.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787334
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ коде клиента ничего не понял, там полный бред какой-то.
это просто c#
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787400
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с серверной частью вроде все нормально стало.код переделал.теперь он и получает и отправляет.а вот с клиентом проблемы.я думаю из за того что он пока не получит определенное кол-во байтов ставит в ожидание всю программу(игру)
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787417
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivВ коде клиента ничего не понял, там полный бред какой-то.
это просто c#

ЭТО я понял.
Это -- единственное, что я понял.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787418
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникс серверной частью вроде все нормально стало.код переделал.теперь он и получает и отправляет.а вот с клиентом проблемы.я думаю из за того что он пока не получит определенное кол-во байтов ставит в ожидание всю программу(игру)

Ты зря думаешь, что это -- проблема с клиентом.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787475
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

если я сделаю непрерывную передачу сообщений и с сервера на клиент и обратно,будет ли это правильно?иначе по другому не получается
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38787576
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникMasterZiv,

если я сделаю непрерывную передачу сообщений и с сервера на клиент и обратно,будет ли это правильно?иначе по другому не получается


что это значит? она и так такая должна быть.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788632
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

а разве сервер не ждет при len=recv(clients[number].Sock,msg1,sizeof(msg1),0);
и я сделал по два потока для каждого на сервере один для приема другой для отправки,тот который для отпраквки отправляет беспрерывно,а тот который для приема ждет пока не поступит сообщение.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788659
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежника разве сервер не ждет при len=recv(clients[number].Sock,msg1,sizeof(msg1),0);
сокет может вернуть меньше чем sizeof(msg1)

самому "сообщение" собирать нужно - или на разделителях основываясь, или по длине, прямо или косвенно переданной в заголовке
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788946
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежника разве сервер не ждет при len=recv(clients[number].Sock,msg1,sizeof(msg1),0);



Если данных нет -- ждёт. Есть -- не ждёт.

Картежники я сделал по два потока для каждого на сервере один для приема другой для отправки,тот который для отпраквки отправляет беспрерывно,а тот который для приема ждет пока не поступит сообщение.

Как-то я этого не видел... Ну хорошо, если так.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788950
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКартежника разве сервер не ждет при len=recv(clients[number].Sock,msg1,sizeof(msg1),0);
сокет может вернуть меньше чем sizeof(msg1)

самому "сообщение" собирать нужно - или на разделителях основываясь, или по длине, прямо или косвенно переданной в заголовке


Ребята, я хочу заметить ещё раз, что никаких "сообщений" в TCP нет.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788977
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivРебята, я хочу заметить ещё раз, что никаких "сообщений" в TCP нет.
если ты внимательно читал мой пост - речь идёт о сообщениях прикладного уровня(поверх tcp)
а топикстартер с этой задачей бьётся уже давно
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38788992
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Я знаю, я просто хотел ещё раз это подчеркнуть. Для НЕГО.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790082
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на клиенте формируется сообщение разной длиной, может быть и меньше 256(оно ограничено словами begin и the_end,между этими словами тело сообщения), и больше,затем с клиента делаю отправку на сервер по 256 байт, не достающие байты последнего соощения заполняю пробелами.

на сервере все собирается в переменную S до тех пор пока не соберется полностью сообщение (пока не будет begin и the_end).
Код: plaintext
1.
2.
3.
4.
msg[256]
...//тут чтение в msg
S=S+msg;
...



вот каждый раз когда приходит 256 байтов и я их добавляю к S то между ними добавляется еще какие то символы непонятные,они уже идут в msg,забыл,то ли вначале,то ли в конце. и на клиенте и на сервере количество символов 256
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790093
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сервере вывел
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
string S="";
...
while(b){
  msg[256];
  ...
  S=S+msg;
  cout<<sizeof(msg)<<"  "<s.length()<<"\n";
}


Для первого приема 256 байтов вывело следующее
Код: plaintext
1.
256 276


потом посчитал количество букв(не цифр) в msg = 20(то строке 236 байтов под цифры,и 20*2=40 байтов для букв) выходит что при при добавлении в строку оно все перекодируется в другую кодировку(кол-во байтов меняется),и не могу понять связано это как то с тем что у меня появляются лишние символы(непонятные типа ММММхММХФМММММ,это в отладчике так показывает,а в консоле специфические символы,которых нет на клаве)
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790098
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатку сделал,просто у себя пишу строчными, а здесь прописными решил написать
Код: plaintext
1.
cout<<sizeof(msg)<<"  "<S.length()<<"\n";
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790107
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[Картежник]на клиенте формируется сообщение разной длиной, может быть и меньше 256(оно ограничено словами begin и the_end,между этими словами тело сообщения), и больше,затем с клиента делаю отправку на сервер по 256 байт, не достающие байты последнего соощения заполняю пробелами.




а зачем? для пущей лучшести?




на сервере все собирается в переменную S до тех пор пока не соберется полностью сообщение (пока не будет begin и the_end).


Код: plaintext
1.
2.
3.
4.
msg[256]
...//тут чтение в msg
S=S+msg;
...



вот каждый раз когда приходит 256 байтов и я их добавляю к S то между ними добавляется еще какие то символы непонятные,они уже идут в msg,забыл,то ли вначале,то ли в конце. и на клиенте и на сервере количество символов 256[/quot]


ой я устал уже...
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790114
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникопечатку сделал,просто у себя пишу строчными, а здесь прописными решил написать
Код: plaintext
1.
cout<<sizeof(msg)<<"  "<S.length()<<"\n";




Тебе по-видимому нужно писать на каком- то другом языке программирования, С для тебя не подходит.

Ну или хотя бы для начала язык подучить, ты основ не знаешь, ты сетевой сервер так не напишешь на шару, не получится.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790136
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКартежникопечатку сделал,просто у себя пишу строчными, а здесь прописными решил написать
Код: plaintext
1.
cout<<sizeof(msg)<<"  "<S.length()<<"\n";




Тебе по-видимому нужно писать на каком- то другом языке программирования, С для тебя не подходит.

Ну или хотя бы для начала язык подучить, ты основ не знаешь, ты сетевой сервер так не напишешь на шару, не получится.
Ты прав я пришел из Дельфи.
но как так определил по одной этой строчке что ли?а где там ошибка?
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790196
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникMasterZivпропущено...



Тебе по-видимому нужно писать на каком- то другом языке программирования, С для тебя не подходит.

Ну или хотя бы для начала язык подучить, ты основ не знаешь, ты сетевой сервер так не напишешь на шару, не получится.
Ты прав я пришел из Дельфи.
но как так определил по одной этой строчке что ли?а где там ошибка?

Код: plaintext
1.
cout<<sizeof(msg)



Тут ты печатаешь константу.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790216
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
что там константа 256 это я знаю.можно было и не выводить sizeof(msg).но вопрос о другом.почему добавляются дополнительные непонятные символы,это утечка в памяти?Каждый раз после запуска программы, при первом приеме всего сообщения, всегда в одном и том же месте одни и те же непонятные символы в одном и том же кол-ве. После второго приема всего сообщения(т.е. begin и the_end) идет смещение,добавляются новые непонятные символы,но все в том же месте
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790231
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,

в msg нет завершающего нуля - вот мусор при конкатенации и приклеивается (до первого нулевого символа)
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКартежник,

в msg нет завершающего нуля - вот мусор при конкатенации и приклеивается (до первого нулевого символа)

к тому же надо буфер предварительно чистить. Или то, или другое.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790291
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или обрабатывать то кол-во байт, которое реально было считано.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790318
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИли обрабатывать то кол-во байт, которое реально было считано.
это ещё не все грабли у топикстартера

ЗЫ

обрати внимание на разделители - Картежникbegin и the_end,между этими словами тело сообщения
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790478
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
понятно,значит правильней будет делать типа такого?
Код: plaintext
1.
for(i=;i<256;i++){s=s+msg[i];}


готовых функций пока еще незнаю решил показать в цикле
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790484
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for(i=0;i<256;i++){s=s+msg[i];}
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790605
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник
Код: plaintext
1.
for(i=0;i<256;i++){s=s+msg[i];}





что должен делать этот код ?
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790609
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКартежник
Код: plaintext
1.
for(i=0;i<256;i++){s=s+msg[i];}





что должен делать этот код ?
заменить s=s+msg; раз вы говорите что возможно так вместе с msg дополнительно мусор идет
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790619
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКартежник
Код: plaintext
1.
for(i=0;i<256;i++){s=s+msg[i];}





что должен делать этот код ?

Код: plaintext
1.
2.
3.
4.
//c-string (3)	
string& string::append (const char* s);
//buffer (4)	
string& string::append (const char* s, size_t n);
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38790621
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

ок.спасибо
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791321
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMasterZivпропущено...


что должен делать этот код ?

Код: plaintext
1.
2.
3.
4.
//c-string (3)	
string& string::append (const char* s);
//buffer (4)	
string& string::append (const char* s, size_t n);


теперь все нормально работает без лишних символов.а как вы посоветуете организовать протокол передачи между c++ и c#?передаются имя_объекта,его координаты,[если есть радиус,высота,вершины,ребра],в основном все цифры(кроме ребер(номера вершин)) double типа.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791354
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникMasterZivпропущено...


Код: plaintext
1.
2.
3.
4.
//c-string (3)	
string& string::append (const char* s);
//buffer (4)	
string& string::append (const char* s, size_t n);


теперь все нормально работает без лишних символов.а как вы посоветуете организовать протокол передачи между c++ и c#?передаются имя_объекта,его координаты,[если есть радиус,высота,вершины,ребра],в основном все цифры(кроме ребер(номера вершин)) double типа.


я кажется уже советовал.
использовать готовый протокол.
XMPP, STOMP...
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791362
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКартежникпропущено...

теперь все нормально работает без лишних символов.а как вы посоветуете организовать протокол передачи между c++ и c#?передаются имя_объекта,его координаты,[если есть радиус,высота,вершины,ребра],в основном все цифры(кроме ребер(номера вершин)) double типа.


я кажется уже советовал.
использовать готовый протокол.
XMPP, STOMP...
а какой лучше подойдет для постоянного соединения с непрерывной передачей сообщений
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791369
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HTTP.
Версия 1.0 - общепринятая, но нестандартная прагма, версия 1.1 - штатные постоянные соединения.
Ньюанс: крайне желательна версия 1.1 и поддержка "кода сто" (Continue).
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791380
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежниктеперь все нормально работает без лишних символов.а как вы посоветуете организовать протокол передачи между c++ и c#?
вопрос наверное не о протоколе, а о формате содержательной части сообщений?
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791395
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКартежниктеперь все нормально работает без лишних символов.а как вы посоветуете организовать протокол передачи между c++ и c#?
вопрос наверное не о протоколе, а о формате содержательной части сообщений?
аха, а то что MasterZiv это что?
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791523
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникMasterZivпропущено...



я кажется уже советовал.
использовать готовый протокол.
XMPP, STOMP ...
а какой лучше подойдет для постоянного соединения с непрерывной передачей сообщений

Мужчина, я тебе что написал ?
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791527
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишу немного о содержательной части этих протоколов:
XMPP достаточно сложен (но не фантастически), поддерживает сообщения, ориентирован на XML и определяет содержательную часть сообщений. Наверное, есть библиотеки, поддерживающие его уже на уровне элементов XMPP.

STOMP очень простой, также поддерживает сообщения, ориентирован на простой текст и никак не определяет содержательную часть сообщения (может быть всё, что угодно).

XMPP и STOMP применяются в Messaging services, XMPP применяется в популярных чат-системах, в частности, в Jabber.
Оба протокола НЕ ОРИЕНТИРОВАНЫ на бинарные данные, но бинарные данные можно через них передавать (не без накладных расходов, видимо).

Возможно и даже наверняка существуют другие протоколы подобного рода.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791530
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovHTTP.
Версия 1.0 - общепринятая, но нестандартная прагма, версия 1.1 - штатные постоянные соединения.
Ньюанс: крайне желательна версия 1.1 и поддержка "кода сто" (Continue).

Я бы не стал с ним связываться.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791552
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникаха, а то что MasterZiv это что?
MasterZiv пишет о протоколе обмена сообщениями

мне показалось, что вопрос касается уже тела сообщения (полезной нагрузки) (предполагаю что поток TCP удалось нарезать на сообщения )

Картежникпередаются имя_объекта,его координаты,[если есть радиус,высота,вершины,ребра]
передайте в виде текста разделив запятыми. перед списками - запишите количество последующих элементов,
в начало - тип сообщения добавьте, в будущем пригодится
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791623
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКартежникаха, а то что MasterZiv это что?
MasterZiv пишет о протоколе обмена сообщениями

мне показалось, что вопрос касается уже тела сообщения (полезной нагрузки) (предполагаю что поток TCP удалось нарезать на сообщения )

Картежникпередаются имя_объекта,его координаты,[если есть радиус,высота,вершины,ребра]
передайте в виде текста разделив запятыми. перед списками - запишите количество последующих элементов,
в начало - тип сообщения добавьте, в будущем пригодится

Да легче готовый протокол использовать, и библиотеку для его разбора.
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791708
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа легче готовый протокол использовать, и библиотеку для его разбора.
это очень индивидуально (и зависит от многих факторов)

PS
XML для вышеописанных данных - это перебор, на мой взгляд
...
Рейтинг: 0 / 0
Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
    #38791833
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivДа легче готовый протокол использовать, и библиотеку для его разбора.
это очень индивидуально (и зависит от многих факторов)

PS
XML для вышеописанных данных - это перебор, на мой взгляд

Не думаю.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Взаимодействие между сервером на c++ и клиентом на c#(Unity3d)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]