我定義了一個類,然後我定義了一個類類型的對象。我想將這個對象透明地發送到在另一臺計算機上運行的另一個Java應用程序。完成這項任務的最佳技術是什麼?通過互聯網發送對象
回答
您可以使用java API創建對象流併發送任何可序列化的對象。但你必須記住,這些去加密通過網絡:
發件人的一面:
CustomObject objectToSend=new CustomObject();
Socket s = new Socket("yourhostname", 1234);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(objectToSend);
out.flush();
,並在接收端:
ServerSocket server = new ServerSocket(1234);
Socket s = server.accept();
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
CustomObject objectReceived = (CustomObject) in.readObject();
您將首先考慮使用Java Serializable接口進行序列化。 Sun有一篇關於它的好文章Discover the secrets of the Java Serialization API。
有關通過網絡實際傳輸序列化對象的信息,請參閱Java Sockets tutorial。
有很多方法可以做到這一點。這裏有一些事情要研究,你可以選擇一個最適合你的應用程序的東西。
- J2EE
- RMI
- 對象序列化推動位通過套接字
- WEBSERVICES
幾乎任何通信框架將允許你以某種方式通過網絡推對象或另一個。您只需要查看它們,看看哪些適用於您的應用程序。快速谷歌應該找到更多的方法。
A(事實上)標準要實現這一點,將使用網絡服務,例如使用在Java 6中捆綁的JAX-WS。請參閱this tutorial獲取java-first樣本(即使用註釋)。這非常簡單直接。
有超過其它方法,如Serialization
一個Socket,RMI,EJB的,但是,在互聯網上工作的時候,Web服務是一種自然的選擇,因爲他們依賴於現有的標準(SOAP,HTTP)和與防火牆輕鬆應對(對於所有其他解決方案,這可能是實際問題)。
Java使用ObjectOutputStream(和ObjectInputStream)提供(二進制)對象序列化。您可以將Object()寫入流中,並在另一端寫入readObject()。你需要做的就是實現Serializable接口。
但不是手動執行此操作,您可能有興趣將它提升一級並使用遠程方法調用。使用RMI,您可以調用另一個JVM中的對象的方法,並且所有的序列化和聯網都在後臺進行。
爲了完整起見,如果不能使用二進制格式,也會有XML bean序列化。這種XML格式非常通用(閱讀:詳細和醜陋),但是有一些流行的庫(如XStream)可以創建替代的XML序列化。
- 1. 通過互聯網發送一位
- 2. C#通過互聯網發送文件
- 3. 通過互聯網傳遞JSon對象?
- 4. 通過互聯網
- 5. 通過互聯網
- 6. 通過互聯網
- 7. 通過互聯網
- 8. 通過網絡發送對象向量
- 9. 通過網絡發送對象
- 10. 通過互聯網發送文件的可靠方法
- 11. 通過互聯網從手機發送數據到手機?
- 12. 通過互聯網發送UDP數據包
- 13. 獲取當前遊戲狀態並通過互聯網發送
- 14. 接收客戶端通過互聯網發送的數據報
- 15. 通過互聯網發送RTP包(流)到服務器
- 16. 套接字 - UDP通過互聯網發送數據
- 17. 發送通過互聯網多投包在Java中
- 18. 捕獲桌面,使其256色,並通過互聯網發送
- 19. 需要通過互聯網從Ruby發送數據到C#
- 20. 測量通過互聯網發送和接收的流量
- 21. 通過互聯網發送TCP數據包(使用Ruby)
- 22. 以安全的方式通過互聯網發送數據
- 23. 如何通過互聯網發送PDF文件?
- 24. 如何通過互聯網向智能手機發送短信?
- 25. 想通過互聯網使用hornetq發送/接收JMS消息
- 26. 通過互聯網服務和OOM異常發送大文件
- 27. 通過互聯網發送QTMovie的音頻
- 28. 2路通過互聯網
- 29. 如何通過互聯網
- 30. VSS通過互聯網
你的意思是像衛星,互聯網或AM/FM收音機?或者,如果不是,我們可以看看課程嗎?給我們代碼夥計! \ o /任何東西!只要它仍在移動,一點點.. – 0scar
順便說一句,你問最好的技術來完成你的問題,而不是示例代碼如何做到這一點。這就是爲什麼你有3個技術答案的答案。如果你想要示例代碼,然後要求示例代碼,你會得到來自多個人的示例代碼,瞭解如何使用不同的技術或使用相同的技術,但是你可以選擇更多的代碼。 –