Вниз
Скачать: CL | DM;

склейка пакетов в сокете   Найти похожие ветки 

← →
malyar   (2007-04-05 23:20) [0]

всем привет
народ внесите ясность в работу сокетов

имеется serversocket работающий в nonblock режиме
все данные которые он получает от разных клиентов
заносятся в одну глобальную переменную (buf:string)

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
var s:string;
 begin
  s:=socket.ReceiveText;
  if s = "" then exit;
 buf:=buf+s;
 end;
----------------------------------------------
предположим клиент1 передает на сервер "111111111111111"
предположим клиент2 передает на сервер "222222222222222"

возможна ли ситуация когда в переменоой buf данные перемешаются
что типа "11112211222221111112222" ?

или всегда будут "111111111111111222222222222222" ?

тобиш возможно-ли возникновение события ServerSocket1ClientRead
пока клиент не передал все данные посланные командой  sendtext ?


← →
SlymRO ©   (2007-04-06 07:00) [1]

malyar   (05.04.07 23:20)
11112211222221111112222

именно так
один Send  может вызвать множество Read и наоборот
множество Send может вызвать один Read


← →
medved_68 ©   (2007-04-06 09:03) [2]


> возможна ли ситуация когда в переменоой buf данные перемешаются
>
> что типа "11112211222221111112222" ?

Нет, если только сам перемешаешь при передаче. :)
> или всегда будут "111111111111111222222222222222" ?

Да. В каком порядке послал, в таком и получишь, а вот в одном пакете или в нескольких - зависит от количества передаваемого.


← →
Сергей М. ©   (2007-04-06 09:16) [3]


> предположим клиент1 передает на сервер "111111111111111"
> предположим клиент2 передает на сервер "222222222222222"
>
> возможна ли ситуация когда в переменоой buf данные перемешаются
> что типа "11112211222221111112222" ?


Да, возможна - буфер-то у тебя один на всех клиентов !
А должен быть индивидуальный буфер для каждого клиента.



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

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



Память: 0.45 MB
Время: 0.015 c
2-1195547052
Layner
2007-11-20 11:24
2007.12.16
Не-уничтожение объектов, чем грозит


11-1181489135
=BuckLr=
2007-06-10 19:25
2007.12.16
Про DeleteLines


2-1195407959
voe
2007-11-18 20:45
2007.12.16
Где было запущенно приложение?


2-1195670411
greengeneral
2007-11-21 21:40
2007.12.16
MaxLength в StringGrid


4-1180469881
Hekus
2007-05-30 00:18
2007.12.16
Как получить индекс интерфейса удаленного соединения?




   Наверх