2012-03-20 52 views
1

這是我的結構的定義轉換複雜的結構,以字節數組在C#

public struct SPMSifHdr 
    { 
     public UInt32 ui32Synch1; 
     public UInt32 ui32Synch2; 
     public ushort ui16Version; 
     public UInt32 ui32Cmd; 
     public UInt32 ui32BodySize; 
    }; 

    struct SPMSifReturnKcdLclMsg 
    { 
     public SPMSifHdr hdr1; 
     public char ff; 
     public char[] Dta; 
     public bool Debug; 
     public char[] szOpId; 
     public char[] szOpFirst; 
     public char[] szOpLast; 
    } 

如何結構SPMSifReturnKcdLclMsg轉換爲字節數組通過TCP/IP發送?
原諒我的語言,我不能用英語很好:對

+0

一旦字節轉換的結構來到TCP/IP通道的另一端,你想如何將其轉換回來?雙方都共享包含結構定義的dll嗎? – digEmAll 2012-03-20 09:28:10

+0

我只是做客戶端程序。程序應該將格式化的數據發送到接口 – 2012-03-20 09:33:40

+0

因此,tcp偵聽器需要一種方法來理解字節。如果使用二進制序列化,另一方需要包含結構定義的程序集來反序列化它。 – digEmAll 2012-03-20 09:39:13

回答

3
Socket socket = OpenSocket(); 
using (var stream = new NetworkStream(socket)) 
{ 
    var formatter = new BinaryFormatter(); 
    formatter.Serialize(stream, obj); 
} 

編輯:
忘了提,你應該結構被標記爲Serializable

+1

結構是否需要標記爲「Serializable」才能工作? – 2012-03-20 09:27:38

+0

我想這樣... – 2012-03-20 09:31:44

+0

如何將其標記爲可序列化? – 2012-03-20 09:32:39