我正在製作一個java程序&我希望它既是服務器又是客戶端(使用套接字)。這最好如何實現?雙向連接
雙向連接
回答
如果希望每個站充當服務器和客戶端,如P2P聊天,
你應該實現一個線程有一個ServerSocket,偵聽傳入連接,一旦有一個連接,打開新的線程來處理它,所以當前的將繼續監聽新的連接。
爲了使它能夠連接到其他人,使用簡單的SocketAddress和插座,在不同的線程嘗試連接到指定的服務器地址(例如,通過用戶的朋友列表)
你可以找到大量使用Google搜索的聊天示例。
歡呼聲。
如果你的意思是你想都發送和接收數據,一個普通插座(每臺計算機上)會做得很好。見Socket.getInputStream
和Socket.getOutputStream
。
通常的「服務器」/「客戶端」區別只是歸結哪個主機正在偵聽傳入連接,以及哪些主機連接到這些主機。一旦建立連接,您就可以從兩端發送和接收數據。
如果你想同時主機聽傳入連接,然後就成立了ServerSocket
,並呼籲在兩臺主機上accept
。
相關鏈接:
我試過這段代碼,但它無效:import java.io.*; import java.net。*; public class Server public static void main(String args [])throws Exception ServerSocket Server = new ServerSocket(6000); Socket connected = Server.accept(); Socket clientSocket = new Socket(「localhost」,6000); System.out.println(clientSocket.getInetAddress()); } } –
我一直在socket.accept後等待 –
您需要將該程序拆分爲兩個程序。接受將阻止,直到客戶端連接! – aioobe
如果你希望程序執行相同的操作,無論它是否是某個連接的服務器或客戶端,我可以想象將客戶端Socket
和ServerSocket.accept()
生產的套接字交給處理的相同方法。
看看jgroups它是一個庫,它允許創建成員可以相互發送消息的進程組。另一種選擇是使用hazelcast ...
你也可以看看this question。
- 1. 雙向圖,最短連接?
- 2. C#類之間的雙向連接
- 3. 維護一個雙向UDP連接
- 4. 雙向一對多連接表
- 5. 如何連接循環雙向鏈表
- 6. Rails多態連接表工作雙向
- 7. 易於測試雙向網絡連接
- 8. 雙向連續套接字通信
- 9. 在Javascript中連接雙向字符串
- 10. 雙向連接列表創建節點
- 11. 集中傳出雙向SSL連接
- 12. 雙左連接
- 13. 雙連接圖
- 14. 雙外連接
- 15. 雙外連接?
- 16. 雙向habtm鏈接
- 17. Firefox Websocket雙連接
- 18. SQL雙外連接?
- 19. 雙左MYSQL連接?
- 20. SQL雙外連接?
- 21. LINQ雙左連接
- 22. 兩個單向連接是雙向的嗎?
- 23. C#套接字雙連接?
- 24. Java雙向套接字連接(服務器/客戶端)
- 25. Linq,雙左連接和雙重計數
- 26. 鏈接事件雙向
- 27. 雙向鏈接列表
- 28. SymmetricDS雙向推組鏈接
- 29. 雙向鏈接使用Normalizr
- 30. 雙向外部聯接
你的意思是你要兩次啓動程序並希望實例進行通信?或者你計劃開始更多的實例?或者你的程序將成爲其他程序的服務器,另一個程序的客戶端? – pgras
該程序將在兩臺不同的機器上運行,它們將交換數據 –