【发布时间】:2012-05-11 19:09:54
【问题描述】:
我有以下数据结构或记录,我需要通过 NetworkStream 与另一台机器进行流式传输。
TRemoteRecord = record
command:TRemoteCommand;
status:TRemoteStatus;
signame:string;
rvalue:double;
ivalue:LongInt;
end;
这是我向流发送或写入数据结构或记录的方式。
TheStream:NetworkStream;
SignalClient:TcpClient;
SignalServer:TcpServer;
sb:TRemoteRecord;
SignalClient.ConnectNew(LocalIPEdit.Text,Int32.Parse(ClientPort.Text));
TheStream := new NetWorkStream(SignalClient.Connect.DataSocket);
TheStream.Write(sb, 0 SizeOf(sb));
当我编译它时,它会引发一个异常,“这些参数没有重载写入。”
如何通过networkstream发送和接收数据结构或记录?
谢谢,
【问题讨论】:
-
sb 不是字节数组 (bytes[]),因此会引发异常。即 NetworkStream.Write(bytes[] buffer, int offset, int size)。我认为您需要先将记录序列化为字节数组。这可能并不简单,因为您的 Record 包含各种类型和字符串类型(获取可变长度的字符串大小需要特别注意)。
标签: .net tcpclient networkstream delphi-prism tcpserver