如何通过NetworkStream传输数据结构或记录?

时间:2012-05-04 19:08:19

标签: .net tcpclient networkstream delphi-prism tcpserver

我有以下数据结构或记录,我需要通过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));

当我编译它时,它引发了一个异常,“这些参数没有重载写入。”

如何通过网络流发送和接收数据结构或记录?

谢谢,

1 个答案:

答案 0 :(得分:1)

您需要先将记录序列化为字节[]。

这将帮助您入门:

http://msdn.microsoft.com/en-us/library/ms752244.aspx

以下是两种序列化和反序列化给定类型的方法: http://dooba.net/2009/07/02/c-sharp-and-serializing-byte-arrays/ [注意:要特别注意你如何处理字符串(它有可变的大小)和你的自定义类型。]