Форум: "Сети";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Внизсклейка пакетов в сокете Найти похожие ветки
← →
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 вся ветка
Форум: "Сети";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c