ошибка при вызове send

Тема в разделе "WASM.NETWORKS", создана пользователем was_log_a, 12 авг 2006.

  1. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    Я пишу программу удаленного управления (типа Remote Desktop). Так вот, я тестирую ее на локалхосте, и когда сворачиваю окно (или резко передвигаю), соединение между клиентом и сервером разрывается. При резком изменении изображения,естественно, посылается большой объем данных. Программа вызывает send , пытаясь послать около 270 -290 кб, и send возвращается с ошибкой WSAECONNABORTED. Протокол TCP, сокеты неблокирующие с использованием WSAAsyncSelect,ось-WinXP. В функции отправки кадра изображения 3 вызова send осуществляются с небольшим интервалом, первый посылает 1024 байта, второй середину (самый большой кусок),третий остаток (<1024). Когда я тестировал прогу в локальной сети,такого вроде бы не наблюдалось, но то была предыдущая версия, в ней send вызывался в цикле, отправляя по 1 кб.

    Возможно ли то,что ошибка возникает из-за попытки отправить слишком много данных за раз?Или что несколько вызовов send следуют с небольшим интервалом?

    А еще send один раз вернул WSAEWOULDBLOCK,отправлялось около 250 байт,по-видимому,это был третий вызов в функции отправки
     
  2. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    А код отправки можно посмотреть?
    send врядил сможет за раз отправить столько кб, даже в очередь не все поставит...
    у асинх сокетов есть сообщение о готовности к отсылке данных, стоит пресмотреться.
     
  3. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    ну так согласно МСДН функция должна запихнуть в очередь столько,сколько сможет, и вернуть количество байт, а не разрывать соединение
     
  4. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    was_log_a
    Это конечно ДА. Но на вскидку без кода сказать мало кто может ((
    А ты используешь WSASend или send?