socket, передача коряво получается

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
Lev
Сообщения: 45
Зарегистрирован: 14 фев 2005, 11:17

30 мар 2005, 21:55

Предисловие: искал на этом форуме что-нибуть про сеть - так и не нашёл. :(
Обстановка:
Я пишу 2 программы клиент и сервер. Они создают сокеты, клиент естественно конектится и, затем, отправляет с помощью send(..) несколько байт. Сервер, приняв с помощью recv(..) начинает отправлять клиенту данные с помощью вызова send(..). В каждом вызове send отправляется примерно 50 байт. Количество вызовов сервером функции send примерно 200. Клиент в свою очередь принимает.
Проблема:
Сервер то отправляет (вызов send удачен), а клиент не принимает или принимает мало (1 или 2 раза). Но если сделать Sleep() на сервере хотя бы 30 миллисекунд перед вызовом send() то клиент примет все 200 раз.
Такое ощущение что для правильной работы нужно что бы клиент работал быстрее чем сервер...
В чем заключается проблема? В SDK написано:"The successful completion of a send does not indicate that the data was successfully delivered"
Как сделать что бы "data was successfully delivered".
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

31 мар 2005, 15:18

"Это аппаратная проблема - программисты их не решают".
если хочешь все корректно разрулить - сделай подщтверждение клиентом принятия пакета и только тогда отправляй новые данные.
а вообще в инете есть книга Й Снейдер (Снайдер) "Эффективное программирование TCP/IP" там очень хорошо про все грабли расписано
В SAD - все в SAD.
Lev
Сообщения: 45
Зарегистрирован: 14 фев 2005, 11:17

31 мар 2005, 19:41

Спасибо, помогли. Уже читатю.
RevYurMIh
Сообщения: 20
Зарегистрирован: 30 май 2005, 01:36
Откуда: ry_@tut.by

02 июн 2005, 20:56

А не могли бы кто небудь скинуть этот линк?
Kill yourself!
Ответить