2013-07-15 135 views
0

我想序列化一個類發送到服務器將使用該對象的服務器。我正在使用Microsoft的異步客戶機/服務器設置的示例:http://msdn.microsoft.com/en-us/library/bew39x2a.aspx我正在使用二進制格式化程序。將對象序列化爲字符串

爲了測試這一點,我使用這個類:

[Serializable] 
class Class1 
{ 
    public int x = 10; 
    public string banana = "banana"; 

} 

,並嘗試與其進行序列化:爲了將其發送到服務器

Class1 example = new Class1(); 
IFormatter formatter = new BinaryFormatter(); 
Stream stream = new MemoryStream(); 
formatter.Serialize(stream, example); 

,我需要發送一個字符串:

StreamReader reader = new StreamReader(stream); 
string text = reader.ReadToEnd(); 
server.Send(text); 
stream.Close(); 

但這不起作用。我試圖將流轉換爲字節[],如here所示,但在調試器中對此進行測試時,我仍然收到Stream was unreadable異常。

回答

1

嘗試

Class1 example = new Class1(); 
IFormatter formatter = new BinaryFormatter(); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    formatter.Serialize(ms, example); 

    ms.Position = 0; 
    StreamReader sr = new StreamReader(ms); 
    String text = sr.ReadToEnd(); 

    server.Send(text); 
} 

我認爲,這得到了錯過的是復位的MemoryStream的位置的部分,能夠讀取(認爲它作爲復卷錄音後播放)

+0

感謝,工作就像一個魅力! – jokulmorder

相關問題