回答
.NET上有許多序列化程序可用。
最簡單的是二進制序列化。這是最相似相當於在C#
https://msdn.microsoft.com/en-us/library/4abbf6k0(v=vs.110).aspx
但問題是,如果你使用這個,你的服務器和客戶端都需要在鎖升級步驟(即,如果你升級你的服務器,你必須更新所有客戶端,否則服務器將無法反序列化舊客戶端的請求)
DataContractSerializer提供了XML格式的消息,並具有專爲Web服務設計的選項,以便它可以執行某些版本容差。
特別是,它允許錯過屬性(例如,當服務器升級,讓更多的旋鈕,但老客戶都不能發送)。
對於你的另一個問題。 要從Socket獲取流,只需使用套接字作爲參數創建一個System.Net.Socket.NetworkStream對象實例。
Stream s = new NetworkStream(socket);
Windows Communication Foundation(WCF)抽象了很多編程分佈式系統的細節。使用WCF編寫服務器客戶端應用程序而不是使用原始套接字進行編程要容易得多。
謝謝! 什麼是它的等效「in = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));」爲了在套接字中寫入? – TotorAndMimine
它在C#中不能以這種方式工作 您創建一個NetworkStream對象實例,然後使用Serializer對象寫入該流。 它更像 在新= ObjectInputStream中(新的BufferedInputStream(sock.getInputStream()); in.writeObject(objectToWrite); 將轉化到 NetworkStream ns = new NetworkStream(sock); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(objectToWrite,ns); –
它沒有直接的等價物,但它的功能很容易用Stream和XmlSerializer/BinaryFormatter實現。
下面是使用XmlSerializer的一個例子:
public void StoreToFile<T>(T ObjectToStore, string FileName)
{
XmlSerializer ser = new XmlSerializer(typeof(T));
using(Stream str = File.Create(FileName))
ser.Serialize(str, ObjectToStore);
}
public T RetrieveFromFile(string FileName)
{
XmlSerializer ser = new XmlSerializer(typeof(T));
using(Stream str = File.Open(FileName))
return (T)ser.Deserialize(str);
}
然後,當你想存儲一個類文件中的使用:
MyClass instance = new MyClass(); //The class we want to store.
StoreToFile(instance, "instance.dat");
,並檢索它:
MyClass instance = RetrieveFromFile<MyClass>("instance.dat");
這是一個在文件中只存儲一個類的基本示例,但您可以擴展它以存儲連接在這些流上的更多項目。
而且,和的getOutputStream的getInputStream沒有直接對應的,你可以隨時使用的NetworkStream:
NetworkStream myStream = new NetworkStream(theSocket);
它會表現爲輸入和輸出流,在.NET流通常是讀/寫,所以不需要有兩個sepparated流。
- 1. PowerShell的C#等效代碼
- 2. C#等效的java代碼
- 3. JNA等效的C代碼
- 4. C代碼的Delphi等效代碼
- 5. PHP中的C#HttpRequest的等效代碼
- 6. BufferedReader.readNext()用於Java中ObjectInputStream的等效
- 7. Objective-c等效代碼
- 8. 通插座,ObjectInputStream的,ObjectOutputStream的Activites
- 9. Java從套接字獲取ObjectInputStream ObjectOutputStream
- 10. FileInfo在C#中的代碼分析等效代碼#
- 11. Swift等效的目標c代碼ActionStringDoneBlock
- 12. Objective-C等效的腳本代碼
- 13. 等效於vb.net的c#代碼
- 14. 等效的C#LINQ代碼爲SQL
- 15. 什麼是此代碼的C#等效
- 16. 正確的方法來關閉ObjectInputStream和ObjectOutputStream
- 17. 等效Scala代碼
- 18. 等效vb.net代碼
- 19. Typescript和等效的js代碼
- 20. FxCop(或等效)for non.Net C++代碼
- 21. 什麼是這個Objective-c代碼的等效Swift代碼?
- 22. 這個C#代碼的java等效代碼是什麼?
- 23. 什麼是這個PHP代碼的等效asp.net/c#代碼?
- 24. Html.EditorFor()的等效代碼
- 25. MySQLi等效的MySQL代碼
- 26. Groovy中的eval()的等效代碼
- 27. 以下等式的Matlab等效代碼
- 28. 用指針將C++代碼轉換爲Java等效代碼
- 29. protobuf中#ifdef語法的等效代碼
- 30. Python中警報(3600)的等效代碼
和Socket的方法「getOutputStream()」和「getInputStream()」等價嗎? – TotorAndMimine