Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
1-1105918922
VAmpiru$
2005-01-17 02:42
2005.01.30
Как на паскале создать безразмерный файл?


9-1098387885
OranZevjii
2004-10-21 23:44
2005.01.30
Вывод спрайтов


4-1102521653
ЛапотьВДельфи
2004-12-08 19:00
2005.01.30
Раздача прав доступа к папкам в WinNT (XP)


3-1103790800
Otari
2004-12-23 11:33
2005.01.30
Помощь, Как сделать фильтр с 2 словами


1-1105612228
TankMan
2005-01-13 13:30
2005.01.30
Не понимаю в чем ошибка на аsm-е




   Наверх