У меня есть клиентский и серверный процессы Windows сокета, работающие на одном компьютере с несколькими процессорами.
Допустим, клиент send () запрос, сервер recv () it и сервер send () ответ, а клиент recv () ответ.
Снова клиент посылает () последующий запрос и вызывает вызов recv () для получения ответа от сервера, но recv () немедленно возвращает значение возврата 0. 0. 1003 *
Но из журналов сервер начал обрабатывать второй микросекунду запроса после того, как клиент вернул 0.
server client
----------- -------------
recv()<------------------------------------send()
send()------------------------------------ recv()
recv()<----------------------------------- send()
(returns 0 immediately
before the send() not
happened on the client)
Если мы введем sleep () в клиент / сервер между send () и recv (), эта проблема не возникает.
Также эта проблема не наблюдается на однопроцессорных компьютерах.
Этот код работал без проблем при компиляции с Visual Studio 2010, но начал возникать после компиляции в Visual Studio 2017.
Позвольте мне объяснить, почему такое поведение и что мне здесь не хватает?
Дайте мне знать, если вам нужна дополнительная информация.
Спасибо,
Naga