用序列化和c#得到奇怪的消息

本文关键字:消息 序列化 | 更新日期: 2023-09-27 18:08:37

我试图将它从一个客户端发送到另一个客户端,源,目的地和数据接收良好,但字符串和双精度变为空。这是TcpObject的代码:

[Serializable]
public class TcpObject
{
    public Command Command { set; get; }
    public Object Data { set; get; }
    public int Source { set; get; }
    public int Destination { set; get; }
    public string IDString { set; get; }
    public double exactTime { set; get; }
    public TcpObject()
    {
       Command = Command.Null;
       Data = null;
    }

这是我发送数据的地方:

TcpObject tcpObject = new TcpObject();
tcpObject.Command = Command.Msg;
tcpObject.Source = 1;
tcpObject.Destination = 2;
byte[] junkMsg = new byte[1000];
tcpObject.Data = junkMsg;
tcpObject.IDString = randomString();
tcpObject.exactTime = exactTime.ExactTime();
WorkClient.Send(tcpObject);
hread.Sleep(20);

这是我收到的:

public void Listen()
{
   try
   {
      while (Connected)
      {
         TcpObject tcpObject = new TcpObject();
         IFormatter formatter = new BinaryFormatter();
         tcpObject = (TcpObject)formatter.Deserialize(ServerSocket);
         MessageBox.Show(tcpObject.IDString);
         //TcpObject succeedTcpObject = new TcpObject();
         //get the remainder of the time that the message got send and when the message got accepted.
      }
   }
      catch (Exception) { }
}

这是发送函数:

public static void Send(TcpObject tcpObject) 
{
   try
   {
      IFormatter formatter = new BinaryFormatter();
      formatter.Serialize(ServerSocket, tcpObject);
   }
   catch (Exception) { }
}

弹出的MessageBox为空。我在发送msg之前检查了字符串是否存在。

谢谢。

用序列化和c#得到奇怪的消息

显然,您发送的垃圾从未初始化:

byte[] junkMsg = new byte[1000];
tcpObject.Data = junkMsg;
--SNIP--
WorkClient.Send(tcpObject);