Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.136.159] |
|
Сообщ.
#1
,
|
|
|
Забиваю в массив строку текста и отправляю его с помощью send. Если указываю длину меньше 25, то отправка не происходит. Т.е. функция send завершается успешно и возвращает число байт, которое я послал, но на приемном конце recv блокируется и ждет данных. Если длина 25 и больше , то все нормально работает. Какова может быть причина?
|
Сообщ.
#2
,
|
|
|
Проверь размер буфера на принимающей стороне, или попробуй и использовать неблокирующийся режим приема
|
Сообщ.
#3
,
|
|
|
хотелось бы увидеть исходники приема и передачи.
|
Сообщ.
#4
,
|
|
|
Вероятно причиной явлается неявная оптимизация виндами включенная по умолчанию. Пока не наберется некоторое кол-во байтов на отсылку, винды не отправлают на удаленную сторону очередной пакет. Т.е. они буферизируют передаваемый поток.
Проверить это можно вызвая send 25-ти байтов разков этак ндцать с интервалом в 1 секунду. На приемном конце вы увидите что принимаемые данные по 25 байт приходят стайками. Бороться с этим можно - нужно выключить эту оптимизацию для вашего сокета. Как это сделать не помню, поищите в MSDN. Там это точно есть. |