如何读取未知数据长度的数据.
客户端数据格式未定,所以不知它发送的数据长度,也不能确定结束字符.
AThread.Connection.ReadStream是否可用?怎么用?为什么我用了会报错?
如果Indy控件不行,是否还有别的控件可用?还是得自已写一个?var
Strm : TStringStream;
begin
Strm := TStringStream.Create('');
AThread.Connection.ReadStream(Strm);//这里报错.Out of Memory
//客户端数据发完后不会Disconnect;
....多谢!
客户端数据格式未定,所以不知它发送的数据长度,也不能确定结束字符.
AThread.Connection.ReadStream是否可用?怎么用?为什么我用了会报错?
如果Indy控件不行,是否还有别的控件可用?还是得自已写一个?var
Strm : TStringStream;
begin
Strm := TStringStream.Create('');
AThread.Connection.ReadStream(Strm);//这里报错.Out of Memory
//客户端数据发完后不会Disconnect;
....多谢!
帮帮忙,兄弟们
begin
AStream := TStringStream.Create(SOutline);
AThread.Connection.OpenWriteBuffer;
WriteStream(AStream);
CloseWriteBuffer;
AStream.Free;
end;
Indy的Demo代码
Indy的Demo我看过了,它的发送端发完数据后会断开连接(所以接收端能一直读到发送端断开),而我的发送端发完数据后不会断开.
不过,还是谢谢你!
1:
客户端:
try
begin
OpenWriteBuffer;
WriteStream(OutputStream);
CloseWriteBuffer;
finally
disconnect;
end;服务端:
ReadStream(InputStream,-1,true);2:
客户端:
OpenWriteBuffer;
WriteStream(OutputStream,true,true,outputstream.size);
CloseWriteBuffer;服务端:
ReadStream(InputStream,athread.connection.readinteger,false);
其中athread.connection.readinteger存的是流的字节数大小。这样你就可参接到数据了。
可以读出本次接收到的数据
AThread.Connection.ReadFromStack;
Size := AThread.Connection.InputBuffer.Size;