![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WinSock [D5, D7, Win2k]
Serge_T © (2003-02-01 23:57:00)Делая лабы возник следующий вопрос: есть клиент и сервер. Использую блокирующие сокеты. Клиент посылает серверу некоторую строку используя send(), сервер принимает recv(Sock, buf, bufsize, MSG_PEEK). При этом возникает проблема: при втором вызове recv() не блокируеся и возвращается таже строка что и первый раз. В хелпе написано что recv() при MSG_PEEK не удаляет данные из входной очереди. Продскажите плз, как удалить эту информацию из очереди? Причём в лабаратории все работает нормально. Может ли это быть из-за того что у меня 7 Delphi а в лаборатории 5? Винды 2000 и у меня и в лаборатории. Заранее спасибо.
Digitman (2003-02-03 08:36:00) [1]непонятно, зачем тебе MSG_PEEK-опция ?
просто
Result := recv(Sock, Buf, BufSize, 0);
mrcat (2003-02-02 15:57:00) [2]Serge_T (02.02.03 02:03)
...
почему в лаборатории с MSG_PEEK работает.
...
Версия Dx тут не при чем, это ж api. А вот Вы можете гарантировать, что буффер "в лаборатории" не "очищал" кто-нибудь другой? ;)
Serge_T (2003-02-02 02:03:00) [3]Спасибо. А всё-таки интерестно почему в лаборатории с MSG_PEEK работает.
mrcat (2003-02-02 00:14:00) [4]MSG_PEEK
Peek at the incoming data. The data is copied into the buffer but is not removed from the input queue.
Юзайте 0.