请教大侠,ClientSocket 非阻塞长连接,能通过流发送数据吗?
如果能,是什么类型的流?
还有把下面的包数据能过什么方式存入一个stream里?
如:
a:=packed record
b:array [0..10] of char;
c:longword;
d:word;
end;
.......
b:a;
Stream1:TStream;
.........
stream1:=TStream.Create;
..........
//该怎样把a存入stream1????
很急呀,请大侠一定帮帮,万分感谢
如果能,是什么类型的流?
还有把下面的包数据能过什么方式存入一个stream里?
如:
a:=packed record
b:array [0..10] of char;
c:longword;
d:word;
end;
.......
b:a;
Stream1:TStream;
.........
stream1:=TStream.Create;
..........
//该怎样把a存入stream1????
很急呀,请大侠一定帮帮,万分感谢
直接发就是了
Socket.SendBuf(b, Sizeof(B));recv:
FillChar(B, SizeOf(B), 0);
Socket.ReceiveBuf(b, SizeOf(B));Stream:
Stream.WriteBuffer(B, SizeOf(B));
能不能这样?
ClientSocket1.socket.SendStream(stream1);
Stream.SendBuffer和Stream.WriteBuffer是功能是什么?
如果WriteBuffer是将包数据存入Stream,那SendBuffer是什么用?
发送才有这个SendStream,SendStream其时也就是用sendBuf的功能来的。
(感觉Borland在误导,有个SendBuf,再弄个SendStream以为什么都能做)
其中ReadBuffer/WriteBuffer的操作是对Read/Write的封装,确定了Read/Write的Count一定成功,否则程序异常。Socket.SendBuf/ReceiveBuf你都要我说?
收/发数据了。它的操作和流差不多,只是对象是网络套接字,网络套接字不明白的话,可以理解为ClientSocket1/ServerSocket
那我能不能这样
procedure TForm1.Button1Click(Sender: TObject);
var
stream1:TStream;
b:a
begin
stream1:=TStream.Create;
stream1.WriteBuffer(b,SizeOf(b));
if not ClientSocket1.Active then
begin
memo1.Lines.Add('客户端没有打开');
exit;
end;
FillChar(b,SizeOf(b));
b.b:='abc';
b.c:=1234567890;
b.d:=2;
stream1.WriteBuffer(b,sizeof(b));
ClientSocket1.socket.SendStream(stream1);
end;
stream1.position := 0;
ClientSocket1.socket.SendStream(stream1);