0

あるクライアントから別のクライアントに送信しようとしましたが、ソース、宛先、およびデータは正常に受信されますが、文字列と double が null になります。これはのコードです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 は空です。メッセージを送信する前に確認したところ、文字列が存在していました。

ありがとう。

4

1 に答える 1

1

明らかに、初期化されていないガベージを送信します。

byte[] junkMsg = new byte[1000];
tcpObject.Data = junkMsg;
--SNIP--
WorkClient.Send(tcpObject);
于 2013-04-11T19:39:59.433 に答える