Я пишу программу удаленного управления (типа Remote Desktop). Так вот, я тестирую ее на локалхосте, и когда сворачиваю окно (или резко передвигаю), соединение между клиентом и сервером разрывается. При резком изменении изображения,естественно, посылается большой объем данных. Программа вызывает send , пытаясь послать около 270 -290 кб, и send возвращается с ошибкой WSAECONNABORTED. Протокол TCP, сокеты неблокирующие с использованием WSAAsyncSelect,ось-WinXP. В функции отправки кадра изображения 3 вызова send осуществляются с небольшим интервалом, первый посылает 1024 байта, второй середину (самый большой кусок),третий остаток (<1024). Когда я тестировал прогу в локальной сети,такого вроде бы не наблюдалось, но то была предыдущая версия, в ней send вызывался в цикле, отправляя по 1 кб. Возможно ли то,что ошибка возникает из-за попытки отправить слишком много данных за раз?Или что несколько вызовов send следуют с небольшим интервалом? А еще send один раз вернул WSAEWOULDBLOCK,отправлялось около 250 байт,по-видимому,это был третий вызов в функции отправки
А код отправки можно посмотреть? send врядил сможет за раз отправить столько кб, даже в очередь не все поставит... у асинх сокетов есть сообщение о готовности к отсылке данных, стоит пресмотреться.
ну так согласно МСДН функция должна запихнуть в очередь столько,сколько сможет, и вернуть количество байт, а не разрывать соединение
was_log_a Это конечно ДА. Но на вскидку без кода сказать мало кто может (( А ты используешь WSASend или send?