![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема приема ReceiveText с несколькоми клиентами [D7, WinXP]
Radgar © (2005-03-20 00:43:00)Дело в том, что при передачи несколькоми клиентами сообщений одновременно, сообщения сливаются. Подскажите, пожалуйста, что нужно cделать, чтобы избежать этого.
Zyb (2005-03-21 10:21:00) [1]вообще на практике лучше слать не sendtext, а sendbuf, более корректная работа
redlord (2005-03-20 01:16:00) [2]то змей
а зачем SendText(s+'|') можно просто SendText(s)
в етом случае каждый клиент получит S и ни байта больше
а вот то что в S гемор творится так ето кодер виноват
Змей (2005-03-20 01:09:00) [3]у меня была такая проблема но попробуй вот так рассылать
for i := 0 to ServSocket.Socket.ActiveConnections-1 do
ServSocket.Socket.Connections[i].SendText(s+'|');
end;
redlord (2005-03-20 01:00:00) [4](при передачи несколькоми клиентами сообщений одновременно)
значит разговор о сервере. но на сервере для каждого клиента свой сокет и они не могут там склеится
Змей (2005-03-20 00:54:00) [5]на этом сайте есть статья писал VID или Snap это один чел :)она заключается как раз в том чтобы склеивать а потом делить пакеты.
а вообще можно берешь строку посылаешь и добавляешь какой нибудь символ разделитель
потом при приеме разделяешь
пример
сервSocket.sendsocket('Vasya'+'|'+'Masha'+'|'+'ушли в лес по хрибы :)')
принимаешь реад:
s:=receivetext
edit1.text:=copy(s,1,pos('|',s)-1)//вот до этого символ ты вставляешь если единицу убрать то он тоже будет вставляться
потом удаляем все до него и его тоже
delete(s,1,pos('|',s));
и можно дальше edit2.text:=copy(s,1,pos('|',s)-1) тут будет уже Маша а в 1-ом как догадался Васька ;)
надеюсь что тебе это поможет
но это примитивно!
зато просто