我需要從我的Java應用程序監視設備狀態(例如設備ip = 192.168.0.22和端口17000,監視器意味着我發送每1秒的請求並獲取響應等數據)。我需要與發送給該設備的另一條消息並接收答案(在相同的IP和相同的端口上)並行。我創建了socket = new Socket(ipAddress,port)。如何實現我沒有碰到的問題(我需要:我先發送,我從第一個得到響應,我發送第二個從第二個得到響應,我發送第三個得到第三個響應,等等)?Java socket並行發送
0
A
回答
1
除非我失去了一些東西,
- 你可以做每一個單獨的線程,
- 或者您也可以將請求發送到所有三個插座,等待所有三個答覆。
- 或者你可以設計你的服務器一次有三個未決的請求。 (它可能已正確工作)發送三個請求到一個連接並等待三個回覆。
最後一個可能是最有效的解決方案。
1
如果您的工作是關心訂單,所以您必須逐一發送請求數據,我的理解是,您的意思是,當您將數據同時發送到設備時,回覆你? 不用擔心,因爲套接字必須緩衝,一個用於發送,另一個用於接收。
1
您可以定義一個請求類型標識符。然後在實現的SocketServer端,可以解析標識符並將請求傳遞給用於處理該類請求的新線程。因此,在你的情況下,你會定義3個不同的處理程序,並且每種類型都會得到一個請求,您可以選擇使用哪個處理程序來處理請求。每個請求將使用相同的Socket進行。
不過,從你的最後一句話:
我需要:我先發,我從第一次得到響應 ,我送第二我從第二 響應,我送第三個我 得到第三響應等等
這聽起來不像並行請求。相反,它聽起來像你想要一個接一個地運行它們,即第二個請求取決於第一個請求的響應?如果是這種情況,那麼你只需使用相同的套接字(不要爲每個請求創建一個新套接字)。然後請求代碼中的邏輯將僅僅是發送請求1,等待響應1,然後發送請求2等等。
相關問題
- 1. 優化Java Socket發送Android到PC
- 2. 在Android中發送和接收Socket Java
- 3. android open socket併發送命令
- 4. C socket編程,發送
- 5. java socket編程問題(發送和接收數據)
- 6. 如何通過java中的TCP socket發送圖像
- 7. Java Socket不向服務器發送消息
- 8. Java通過Socket發送和接收多條消息
- 9. Java Socket命令行參數
- 10. C#通過讀寫SOCKET到JAVA併發生一些併發/套接字問題
- 11. c socket發送字符串命令
- 12. 通過c socket發送結構
- 13. NodeJS + Socket IO發送太多數據
- 14. 淨異步的Socket多線程發送
- 15. 通過socket perl發送文件(圖片)
- 16. 如何確保Socket發送數據?
- 17. 通過Socket發送文件(iOS)
- 18. Socket IO發送服務器阻塞
- 19. 發送文件(大)採用Socket編程
- 20. 發送許多並行WebRequests
- 21. SignalR並行發送消息
- 22. Java Socket編程
- 23. Java TCP Socket Sniffing
- 24. java socket ObjectInputStream
- 25. Java和C並行開發#
- 26. 當我運行代碼,併發送它顯示發送失敗
- 27. Java Socket編程:將對象作爲CSV或序列化對象發送?
- 28. 通過Socket將複雜對象從Java客戶端發送到C服務器
- 29. java socket編程在兩臺機器之間發送和接收文件
- 30. 當數據通過Socket發送時,發送/寫入何時返回-1?
它是UDP還是TCP? – Guillaume 2011-02-10 10:04:12