我是C#中網絡編程的新手。我發現TCPListener類對於在計算機之間發送文本非常有用,但我想知道是否可以直接發送對象(假設客戶端和服務器都有類定義),而不必先將它們轉換爲字符串,然後再創建具有該數據的對象。C#傳遞對象TCPListener
感謝,對您的問題
PM
我是C#中網絡編程的新手。我發現TCPListener類對於在計算機之間發送文本非常有用,但我想知道是否可以直接發送對象(假設客戶端和服務器都有類定義),而不必先將它們轉換爲字符串,然後再創建具有該數據的對象。C#傳遞對象TCPListener
感謝,對您的問題
PM
一種解決方案是使用WCF和標記你的對象爲Serializable
,與TCP結合。但這與您已有的基於套接字的「低級」解決方案完全不同。但是,我會給WCF一個嘗試。
您不能通過網絡直接發送「對象」。你必須將它們轉換成可解析的二進制或文本形式。對於後者,xml經常最適合。您可以使用BinaryFormatter
或XmlSerializer
。
如果你真的想發送.NET對象,因爲你只提供.net客戶端,tcp可能會根據你的需要設置爲低級別。在這種情況下,看看.net remoting它允許您直接交換服務器和客戶端之間的對象。
只要類定義是兩邊一樣的,你可以使用二進制序列化到任何對象序列化到流:
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();
您使用WCF如上所述更好,不過,因爲如果組件在導線的任一側進行版本控制,這將會中斷。
而不是.NET Remoting,看看WCF。 – 2010-10-12 16:08:08
.net遠程處理有問題嗎? – codymanix 2010-10-12 16:14:46