Так вот...у меня проблема, когда задаю функции recv число 3000 в поле размер принимаемых данных то все норм, но когда больше то процес вобще подвисает, ждет ждет и ждет( я не понимаю, может есть ограничение на объем этих данных?
Здравствуйте, nokal, Вы писали:
N>Так вот...у меня проблема, когда задаю функции recv число 3000 в поле размер принимаемых данных то все норм, но когда больше то процес вобще подвисает, ждет ждет и ждет( я не понимаю, может есть ограничение на объем этих данных?
Матчасть:
If no incoming data is available at the socket, the recv call blocks and waits for data to arrive according to the blocking rules defined for WSARecv with the MSG_PARTIAL flag not set unless the socket is nonblocking. In this case, a value of SOCKET_ERROR is returned with the error code set to WSAEWOULDBLOCK. The select, WSAAsyncSelect, or WSAEventSelect functions can be used to determine when more data arrives.
Так вот...у меня проблема, когда задаю функции recv число 3000 в поле размер принимаемых данных то все норм, но когда больше то процес вобще подвисает, ждет ждет и ждет( я не понимаю, может есть ограничение на объем этих данных?
Если настройки сокетов не менялись ( блокирующие, синхронные ) то recv будет ждать, пока не придут данные по сети (для TCP, с UDP немного подругому). Как только данные пришли, recv начнет их извлекать и складывать в переданный ей буфер. Как кончатся данные или буфер — вернет управление.
Соответственно, если recv не возвращает управление — данных нету. Ищи почему они не передались

.