Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.07;
Скачать: CL | DM;

Вниз

Работа с компонентом TServerSocket   Найти похожие ветки 

 
Люк   (2001-12-18 11:51) [0]

Уважаемые коллеги, помогите решить проблему. В своем серверном приложении я использую компонент TServerSocket. В программе я рассылкаю клиентам пакеты, которые идут с частотой порядка три пакета в секунду. Требуется гарантированно доставлять всю последовательность пакетов клиентам. Проблема состоит в том, что периодически SocketSocket для одного из Connections выдает сообщение eeDisconnect, чего по идее не может быть по определению. Кто нибудь подскажет, как организовать гарантированную доставку всей последовательности пакетов данных клиентам?


 
Digitman ©   (2001-12-18 12:00) [1]

TServerSocket использует протокол TCP в режиме SOCK_STREAM, этот режим изначально подразумевает гарант.доставку пакетов. Так что дисконнект у тебя происходит по иной причине. Возможно, по инициативе клиента. А такая инициатива у последнего может возникнуть и в случае каких-то ошибок на его стороне при чтении/записи из/в TClientSocket


 
Люк   (2001-12-18 12:18) [2]

Даже если это так, то как мне возобновить передачу последовательности пакетов, чтобы не было ни дублирования, ни потери. Ведя я не знаю на каком именно пакете произошла ошибка.


 
Digitman ©   (2001-12-18 13:20) [3]

Об этом должен заботиться не сервер, а клиент !
Клиент всегда в состоянии определить, какую часть данных он уже получил при выполнении запроса к серверу (когда внезапно произошел дисконнект), а какую еще не успел. В зависимости от протокола инф.обмена между клиентом и сервером могут быть разные варианты : от повторения того же запроса до посылки некоторого спец.запроса с требованием передать данные с указанной точки ожидания.


 
Люк   (2001-12-19 10:30) [4]

Посмотрел я исходный код компонента и был несколько удивлен, когда заметил, что сокет то инициируется с протоколом IP а не TCP. Так о какой гарантированной доставке сообщений может идти речь?


 
Digitman ©   (2001-12-19 12:46) [5]

интернет-протокол базируется на протоколе TCP. поэтому он и имеет более полное название - TCP/IP. а гарантированность доставки пакета - это нечто иное, чем то, что ты подразумеваешь под ней


 
Wonder ©   (2001-12-19 13:16) [6]

Попробую дополнить Digitman-а.

IP - сетевой протокол, обеспечивающий доставку инкапуслированного в него TCP-пакета до адресата.
TCP - транспортный протокол, гарантирующий доставку до адресата данных, причем именно в том порядке, в котором их отправляют.
WinSock обеспечивает выход как раз на транспортный уровень стека. Поэтому, если не учитывать ошибки связи, то что ты пошлешь, то и получишь.
Тебе не надо задумываться о целостности данных, полученных от транспортного уровня. Надо задумываться только о том, а все ли данные которые ты хотел получить ты получил в действительности? А вот для этого надо будет разработать промежуточное звено (протокол) между уровнем приложения и транспортным уровнем.
Аналогия - Протокол FTP и ftp-клиент с возможностью "докачки". Целостность принятых данных проверяется размером принятого файла и только. Если произошла ошибка связи и размер принятого файла не равен размеру файла на сервере, то его можно "докачать" с места ошибки.




Страницы: 1 вся ветка

Текущий архив: 2002.03.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
6-19281
SemFLY
2001-12-09 03:15
2002.03.07
Как всё-таки разшарить диск ! В FAQ всё смотрел !


3-19047
harismatik
2002-02-06 16:55
2002.03.07
Аналог команды RecNo в Interbase


1-19147
Igor_
2002-02-21 10:36
2002.03.07
Переключение между MDI- Child


3-19072
Ura
2002-02-01 15:55
2002.03.07
IB и скорость


14-19302
Potemkin
2002-01-18 10:26
2002.03.07
Вопрос по QR3