2010-10-12 64 views
0

我是C#中網絡編程的新手。我發現TCPListener類對於在計算機之間發送文本非常有用,但我想知道是否可以直接發送對象(假設客戶端和服務器都有類定義),而不必先將它們轉換爲字符串,然後再創建具有該數據的對象。C#傳遞對象TCPListener

感謝,對您的問題

PM

回答

2

一種解決方案是使用WCF和標記你的對象爲Serializable,與TCP結合。但這與您已有的基於套接字的「低級」解決方案完全不同。但是,我會給WCF一個嘗試。

1

您不能通過網絡直接發送「對象」。你必須將它們轉換成可解析的二進制或文本形式。對於後者,xml經常最適合。您可以使用BinaryFormatterXmlSerializer

如果你真的想發送.NET對象,因爲你只提供.net客戶端,tcp可能會根據你的需要設置爲低級別。在這種情況下,看看.net remoting它允許您直接交換服務器和客戶端之間的對象。

+0

而不是.NET Remoting,看看WCF。 – 2010-10-12 16:08:08

+0

.net遠程處理有問題嗎? – codymanix 2010-10-12 16:14:46

0

只要類定義是兩邊一樣的,你可以使用二進制序列化到任何對象序列化到流:

BinaryFormatter bFormatter = new BinaryFormatter(); 
    bFormatter.Serialize(stream, objectToSerialize); 
    stream.Close(); 

您使用WCF如上所述更好,不過,因爲如果組件在導線的任一側進行版本控制,這將會中斷。