Текущий архив: 2007.12.16;
Скачать: CL | DM;
Вниз
саморекурсия процедуры ClientSocket1Read Найти похожие ветки
← →
redlord (2007-04-06 20:55) [0]объясните плиз почему происходит саморекурсия процедуры
ClientSocket1Read
когда из буфера сокета забираются не все данные а их часть?
что надо чтоб это проверить:
приложение сервер(отдельное от клиента) с компонентом serversocket
отсылающее клиенту например 3 байта (123)
//--------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var n:integer;
begin
for n:= 0 to serversocket1.Socket.ActiveConnections-1 do
begin
serversocket1.Socket.Connections[n].SendText("123");
end;
end;
//----------------------------------------------------------
и приложение клиента (отдельное от сервера) с компонентом
clientsocket
получающее данные, но выбирающее данные из буфера
сокета по одному байту
//----------------------------------------------------------
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s:char;
begin
socket.ReceiveBuf(s,1);
listbox1.Items.add(s);listbox1.Refresh;
end;
//-----------------------------------------------------------
в результате процедура ClientSocket1Read будет вызвана 3 раза
ето хорошо видно если на стоку socket.ReceiveBuf(s,1);
поставить брекпоинт
← →
redlord (2007-04-07 12:16) [1]можно ли боротся с выше упомянутым явлением
просто мне нужно контролируя приходящии данные накопить их в буфере сокета а потом забрать, а саморекурсия не дает выйти из замкнутого цикла пока я не выберу все данные
← →
Сергей М. © (2007-04-09 08:18) [2]Нет тут никакой "саморекурсии".
Это совершенно нормальное поведение программы.
Страницы: 1 вся ветка
Текущий архив: 2007.12.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.028 c