Форум: "Сети";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизОпять про TServerSocket и TClientSocket... Найти похожие ветки
← →
KPV-10k (2002-05-24 21:18) [0]Уважаемые мастера! Пожалуйста помогите с пересылкой картинки через TServerSocket и TClientSocket, посмотрел пример в FAQ, но там нет подсказки как сделать пересылку по условию... Написал аналогию, но этот код почему-то не работает. Пожалуйста помогите исправить ошибку или подкиньте исходник аналогичных действий... (Надо наряду с текстовыми, передавать и бинарные данные).
type
TForm1 = class(TForm)
...
private
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;
end;
Const
SEND_VERSION =1;
SEND_BMP =2;
...
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
Var
S, ST : AnsiString;
TSLA : TStringList;
BEGIN
S:=Socket.ReceiveText;
if not Reciving then BeGiN
SetLength(ST, StrLen(PChar(S))+1);
StrLCopy(@ST[1], PChar(S), Length(ST)-1);
TSLA:=Reception(ST); //Функция разбивает на команды строку ST
Delete(S, 1, Length(ST));
CASE StrToInt(TSLA.Strings[0]) of
SEND_VERSION : InfoMemo.Lines.Add(TSLA.Strings[1]);
SEND_BMP : begin
DataSize:=XStrToInt(TSLA.Strings[1]);
try
Data:=TMemoryStream.Create;
Data.Clear;
Reciving:=True;
Data.Write(s[1], length(S));
if Data.Size = DataSize then begin
Data.Position:= 0;
VisualControlForm.ImageVC.Picture.Bitmap.LoadFromStream(Data);
Socket.Close;
end;
finally
Reciving:=False;
Data.Free;
end;
end;
end;//CASE
TSLA.Free;
EnD; //if
END;
← →
xyz (2002-05-31 00:22) [1]У меня такая же проблема.
Скачал исходник - в пределах локальной проги работает, а вот когда разные - выдает ошибку (что-то с ассинхрониз...)
Помогите человеку и мне тоже.
← →
Song (2002-05-31 09:27) [2]А в чём ошибка конкретно? И где именно?
← →
daos (2002-05-31 16:22) [3]А так попробуйте-у меня любое передает и принимает
procedure TFTestKlient.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
com:string;
ch:array[0..9999] of char;
ms:TMemoryStream;
nr:longInt;
begin
ms:=TMemoryStream.Create;
//try
while true do begin
nr:=Socket.ReceiveBuf(ch,sizeof(ch));
if nr<=0 then break
else ms.Write(ch,nr);
sleep(200);
end;
ms.Position:=0;
//а здесь достаете ихз потока памяти
// и т.п.
Передавать тоже - сначала все сохранить в поток, а затем sendstream
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c