Форум: "Сети";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c