Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Внизвопрос про сокеты (ламерский) Найти похожие ветки
← →
masaka (2006-10-20 20:04) [0]отправляю данные с "сервера"
ServerSocket.SendText("razmer"+IntToStr(st.Size) + #0);
ServerSocket.SendStream(st);
сначала размер данных потом сами данные.. но на клиентсокете все приходит наоборот! сначала вся информачия а потом только сообщение с размером.. почему?
← →
Dmitrij_K (2006-10-20 20:58) [1]неможетбыть
как принимаешь?
← →
masaka (2006-10-20 23:59) [2]так (на клиент_рид):
S:= Socket.ReceiveText;
if (copy(s, 1, 6)="razmer") and (Data.Size=-1) then
begin
tmpS:=copy(s, 7, Pos(#0, s)-7);
Data.Size:=StrToInt(tmpS);
Delete(s, 1, Pos(#0, s));
Data.Buf.Write(s[1], length(s));
LogWrite("Size "+tmpS);
end
else
begin
Data.Buf.Write(s[1],length(s));
LogWrite("+");
if Data.Buf.Size=Data.Size then
begin
Reciving:=false;
Data.Buf.Position :=0;
GBase.LoadFromStream(Data.Buf);
StatusWrite("Complete");
end;
end;
в результате приема буфер наполняется данными и только в конце тсановится известен размер.. для диагностики вставил запись в лог - выглядит примерно так
+
+
+
+
+
Size 404321
← →
Ketmar © (2006-10-21 00:07) [3]data.size <> -1?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.048 c