-
При посылке сообщения свыше 4 кб. на принимающей стороне событие onRead "срабатывает" 2 раза. Полагаю нужно в ScktsComp.pas изменить размер буфера. Подскажите пожалуйста, можно ли считать размер буфера и изменить и как? Спасибо.
-
Не надо ничего менять. Изменение размера буфера не гарантирует ожидаемую тобой "однократность срабатывания" - это особенность TCP.
-
возможно, размер так и сделан, чтоб 4 Кб за раз, а остальное... это уже другое)
-
А что делать, если у меня в каждом сообщении в начале идет команда, а потом сообщение.
-
что смущает то?
-
посыл команды, клиент получает команду и начинает получать данные, складывая в буффер, как только пришел посыл команды (типа конец передаче), то работаем с буффером ;)
-
procedure TForm1.csClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
msg:string;
begin
Msg := Socket.ReceiveText;
ReceiveMsg(msg);
end;
Procedure TForm1.ReceiveMsg(message:string);
var
cmd,msg:string;
begin
cmd:=copy(message,1,4);
msg:=copy(message,5,length(message)-4);
if cmd='....' then
begin
end;
end;
-
и что это?
-
:D ну ... я примерно написла так как уменя происходит :D а что?
-
алгоритм в [5] понятен? если да - вперед, реализовывать!
-
Кароче понятно. Последую совету [5]
-
> :D ну ... я примерно написла так как уменя происходит :D > а что?
из анкеты: Реальное имя: Gennadiy Пол: Мужской О_о
зы > Кароче понятно.
дай то бог;)
-
ээээээ опечатка однако
-
нюню ;)
-
:)
-
> А что делать, если у меня в каждом сообщении в начале идет > команда, а потом сообщение
Аккумулируй на стороне приемника поступающий поток данных до получения целого сообщения (сообщения ожидаемого приемником размера) и только потом делай бла-бла-бла
|