Я реализовал связь TCP / IP между программами VB и VC ++, работающими на одной машине. На стороне VC ++ я создаю поток, который прослушивает соединения. На стороне VB я использую Winsock API для подключения к серверу C ++. Кажется, все работает нормально, особенно когда я вручную отлаживаю и перебираю связь Протокол основан на тексте, команды заканчиваются на '\ n' и могут иметь или не иметь ответ.
А вот и проблема. Я пытаюсь реализовать команды, которые отправляются на сервер, это требует некоторой обработки, и сервер отправляет их обратно клиенту. В простых условиях это работает нормально, но при большой нагрузке или других конфигурациях машины иногда связь прерывается.
Клиент может отправлять команду, но сервер может отправлять ответ предыдущей команды. Клиент VB каким-то образом получает фрагментированный ответ (скажем, вместо «Полученные данные» получает «EIVED»), что нарушает конечный автомат, который я реализовал для отслеживания соединения.
Так что, да, клиент и сервер разговаривают одновременно, и это создает проблему. Как мне сериализовать или поставить в очередь это сообщение? Я понимаю, что это будет похоже на проблему конфликта сетевых пакетов в сети Ethernet.