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

Вниз

ServerSocket и ClientSocket   Найти похожие ветки 

 
zokzok   (2004-11-08 17:15) [0]

отправляю несколько сообщений примерно так (несколько раз вызываю процедуру):

if IsServer then
     ServerSocket.Socket.Connections[0].SendText("text")
   else
     ClientSocket.Socket.SendText("text");


а они принимаются как одно сообщение одной строкой.
Как разделить принимаемые сообщения?


 
Rem ©   (2004-11-08 17:53) [1]

Посылать разделитель. Например, #13


 
zokzok   (2004-11-08 18:27) [2]

бестолку SendText("text"+#13);
там где #13, отображается символ переноса строки (верт. черта)


 
Григорьев Антон ©   (2004-11-09 13:09) [3]


> zokzok   (08.11.04 18:27) [2]
> бестолку SendText("text"+#13);
> там где #13, отображается символ переноса строки (верт.
> черта)

Так вручную их разделить, обнаружив этот символ. TCP - потоковый протокол, он может склеивать несколько пакетов в один, а также разбивать один на несколько. Отправитель и получатель не должны делать никаких предположений о том, как данные будут разбиваться или склеиваться, и должны воспринимать эти данные как единый непрерывный поток, поступающий такими порциями, какими сочтёт нужным система.


 
zokzok   (2004-11-09 19:56) [4]

вобщем так: пишу одинаковый обработчик для TForm1.ClientSocket1Read и TForm1.ServerSocket1ClientRead, и через него отправляю сообщения - принимаются нормально, т е раздельно. Отправляю сообщения из другого места программы - идут непрерывно. Это как-нить проясняет ситуацию?
Может всё-таки можно "разделить" отправку сообщений?


 
Григорьев Антон ©   (2004-11-10 11:56) [5]

Повторяю ещё раз: отправитель и получатель не должны делать никаких предположений о том, как данные будут разбиваться или склеиваться. То, что не склеивается в одной сети, может склеиться в другой. Результат также может зависеть от загруженности сети в данный момент. Нужно, чтобы сообщения гарантировано не склиевались - используйте UDP. Но тогда придётся отказаться от TServerSocket и TClientSocket, т.к. они не поддерживают UDP, и использовать TUDPSocket или писать прямо на API.


 
Digitman ©   (2004-11-10 12:13) [6]


> zokzok   (09.11.04 19:56) [4]


> вобщем


и ответ будет "вобщем".
нужны конкретности ? изволь не "вобщем", а конкретно.


> пишу


пиши. как напишешь - свистни.


> одинаковый обработчик для TForm1.ClientSocket1Read и TForm1.ServerSocket1ClientRead


глубоко сомневаюсь, что серверная и клиентская стороны могут и должны одинаково обрабатывать порции поступающей поточной инф-ции.


> и через него отправляю


что значит "через" ? и какое отношение это событие, возбуждаемое уже по факту приема принимающей стороной неких данных, имеет к "отправляю" ?


 
zokzok   (2004-11-10 20:13) [7]


> Digitman ©   (10.11.04 12:13) [6]

ладно, не злись...

> пиши. как напишешь - свистни.

это я имею в виду процедуру из первого поста

> что значит "через" ?

т е в обработчике содержится процедура, отправляющая сообщения

> какое отношение это событие, возбуждаемое уже по факту приема
> принимающей стороной неких данных, имеет к "отправляю" ?

вот это мне и самому не понятно


 
Digitman ©   (2004-11-11 09:12) [8]


> я имею в виду процедуру из первого поста


я не вижу в 1-м посте никаких процедур.


> в обработчике содержится процедура, отправляющая сообщения


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



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

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

Наверх




Память: 0.49 MB
Время: 0.04 c
14-1105530696
YurikGL
2005-01-12 14:51
2005.01.30
Ищутся форумы по средствам связи


9-1098489583
Malij
2004-10-23 03:59
2005.01.30
OpenGl


1-1106052970
UserCP
2005-01-18 15:56
2005.01.30
Динамическое создание форм CreateForm


8-1098346166
Ricko
2004-10-21 12:09
2005.01.30
Как перенаправить сигнал со входа звуковой карты на выход?


4-1102563017
111
2004-12-09 06:30
2005.01.30
Перезагрузка