2013-10-27 2 views
0

Теперь я выполняю параллельное программирование сокетов с помощью C/C++. Я просто сделал сервер для получения запроса от клиента и отправки пакетов ответов клиентам. Я использую один поток для получения запросов от Клиентов. когда сервер получит новый запрос, будет создан новый поток для отправки некоторых пакетов клиентам. Однако recvfrom на моей стороне клиента всегда возвращает ошибку 10054 winsock, пока мой сервер отправляет пакеты этому конкретному клиенту.UDP Concurrent client recvfrom error

+0

вы получаете в «ICMP порт недоступен» ответ, вы, вероятно, должны справиться с этим. – Hasturkun

ответ

0

Согласно this forum thread, это безобидная ошибка, и вы можете просто игнорировать ее в клиенте.

+0

Как игнорировать его?> Я все еще получил recvfrom, возвращающий значение -1. Это мой буфер в recvfrom все еще получил сообщение, хотя я получил эту ошибку. – user2637966

1

Это сообщение об ошибке означает, что порт udp закрыт, и вы получаете пакет на закрытом порту. Например, в voip-телефоне клиент отправляет origport = 12295, заявив, что, пожалуйста, отправьте пакет по этому адресу и закройте рабочий порт 32000 08: 43: 32.377 cip = 172.x.23.225 sip = 10.x.20.2 cport = 32000 sport = 32128 = 12295 origport

Но если сервер не понимают этого, и вы по-прежнему получать пакет на 32000 с сервера, то клиент будет показывать это сообщение об ошибке

Смежные вопросы