![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сокет на Win API
atruhin © (2004-06-18 08:53:00)Сокет в блокирующем режиме. Вызыв Send возвращает кол-во отправленных байт.
Len := Send(FSocket,FOutData[1],length(FOutData),0);
if Len = SOCKET_ERROR then break;
ВОПРОС: есть ли гарантия что эти байты получены адресатом?
Григорьев Антон (2004-07-05 08:03:00) [1]
> VID © (04.07.04 20:48) [7]
> Так что считаю оповещение получателем о получении данных
> излишним.
Не всегда. Иногда дополнительное подтверждение показывает, что удалённая сторона не только получила пакет, но и опознала его как допустимый в рамках выбранного протокола. Для создания действительно надёжных протоклов это, ИМХО, необходимо.
VID (2004-07-04 20:48:00) [2]lancoder, ты вызвал send. Твои данные будут сначала отправлены в буфер. Потом они ЛИБО дойдут до адресата, ЛИБО ты получишь ошибку (пусть и не сразу, а через время которое в TCP-настройках твоей ОС указано как макс. допустимый период ожидания ответа от получателя - ведь TCP/IP протокол сам реализует эту фичу - оповещении о получении данных). Другого не дано. Так что считаю оповещение получателем о получении данных излишним.
Если я в чём-то ошибся, буду рад корректировкам (только не таким пессимистичным как у Polevi © (04.07.04 19:22) [6])
Polevi (2004-07-04 19:22:00) [3]все пропало
lancoder (2004-07-03 16:31:00) [4]send, к сожалению, не показывает количество отправленых байт, а показывает кол-во байт положенных в буфер сокета.
Polevi (2004-07-03 11:20:00) [5]send
lancoder (2004-07-03 03:29:00) [6]А как послать подтверждение приёма?
atruhin (2004-06-18 09:42:00) [7]Спасибо. А то возникла мысь не зря ли шлю подтверждения приема.
Григорьев Антон (2004-06-18 09:03:00) [8]Нет. Есть гарантия только того, что байты поставлены в очередь на отправку. См., например, http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021