怎么用idtcpserver和idtcpclient来发送和接收流啊?
TIdTCPConnection.WriteStream(AStream: TStream; const AAll: boolean = true;
const AWriteByteCount: Boolean = False; const ASize: Integer = 0);
里后面几个参数是什么意思?
readstream的参数又是什么意思?它怎么知道stream的长度是多少,怎么知道接收完没有?
TIdTCPConnection.WriteStream(AStream: TStream; const AAll: boolean = true;
const AWriteByteCount: Boolean = False; const ASize: Integer = 0);
里后面几个参数是什么意思?
readstream的参数又是什么意思?它怎么知道stream的长度是多少,怎么知道接收完没有?
至于参数的含义你可以按F1,它会告诉你的。^_^
如果你不喜欢READSTREAM,可以用WRITEBUFF自己设定缓冲区大小。
procedure TForm1.Button2Click(Sender: TObject);
var
buf:tfilestream;
begin
buf := TFileStream.Create(edit5.Text, fmOpenRead);//edit5.text文件名(含路径)
IdTCPClient1.Host:=edit1.Text;//ip string;
IdTCPClient1.Port:=1053;
IdTCPClient1.Connect();
IdTCPClient1.WriteLn(ExtractFileName(edit5.Text));
IdTcpClient1.WriteStream(buf,true,true); //发送文件
IdTcpClient1.Disconnect;
buf.Free;
end;
接收端
procedure Tfm_main.IdTCPServer1Execute(AThread: TIdPeerThread);
var
buf: TFileStream;
FileName:string;
size:longint;
begin
// IdTCPServer1.Bindings:='0.0.0.0:1053'
// IdTCPServer1.active:=true; //预先在属性设置好
FileName:=athread.Connection.ReadLn;
buf := TFileStream.Create(FileName, fmCreate);
AThread.Connection.ReadStream(buf, -1, true);
buf.Free;
end;
看你给多少分? ^Q^