用序列化和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之前检查了字符串是否存在。
谢谢。
显然,您发送的垃圾从未初始化:
byte[] junkMsg = new byte[1000];
tcpObject.Data = junkMsg;
--SNIP--
WorkClient.Send(tcpObject);