有沒有辦法通過UDP偵聽器偵聽UDP數據包,然後將數據轉換爲字符串或任何其他數據並通過TCP套接字發送到TCP服務器,我不是非常熟悉UDP,所以任何提示將是偉大的偵聽UDP套接字並轉發到TCP套接字(可能是Java的)
回答
我不會擔心UDP到TCP我會擔心其他方式。
您無法通過UDP接收到您無法放入緩衝區的內容,因此所有接收都會轉換爲一個或多個TCP發送。
另一方面,TCP是基於段的協議,您可能只接收已確認且可用於應用程序緩衝區的重組部分的部分,在所有情況下,這可能不是整個應用程序層消息,因爲我會說明。
讓數據= 30,000字節的數據...
在機器的某個地方得到這個數據,你可以只傳遞一個指針,但得到它,你必須使用網絡或硬件應用是另一臺機器通常通過驅動程序訪問。
套接字是一種常見的設計模式或更簡潔的界面,允許很大的不同網絡和媒介來傳達不均勻...
通過套接字,你可以簡單地擔心協議,如IP或TCP或UDP也許ICMP而且您不必擔心數據如何到達硬件。
網絡堆棧通常是操作系統的一個組件,它與硬件和軟件驅動程序進行交互操作,並且隱藏在Socket接口後面,這樣當只有協議是硬件和網絡時,硬件和網絡的語義無關緊要關注...
返回數據...
發送將被分割爲可以適應網絡媒體上的幾個包中的數據,這通常被稱爲最大可發射單元。
它允許介質所需的標題字段以及足夠的數據量以允許流量控制驅動程序。
驅動程序接收到此數據並創建網絡數據包,這些數據包可以在中等和本地計算機網絡上輕鬆發送和接收。
爲了到達物理網絡,必須將附加層添加到數據包中,例如IP和協議標頭,在這種情況下爲TCP。
網絡堆棧讓我們的驅動程序知道數據已準備好在發送呼叫期間發送。
的數據被複制到網絡棧和應用程序可以繼續進行(TCP或UDP)
分段由下TCP最大段大小或更小的協議創建和將它們發送。
當收到任何一個段並確認可以通過調用recv
來接收。
數據的順序由網絡堆棧維護,如果沒有收到整個段,它將被重新發送。如果某個細分受衆羣的一部分被收到,則該細分受到保護,直到其之前的細分受衆羣得到確認。
TCP的某些實現允許將部分接收的段提供給應用程序緩衝區(使用特殊配置或其他方式,通常禁用tcp重傳以及發送和接收合併但不限於),即使丟失或碎片已接收期間段的一部分內發生,通常是該段的其餘部分將在下一次收到時收到,並提供給應用程序但它是完全可能有更多的數據,從一個新的報文段到達和舊的數據要麼從來不或到達太遲,以至於您的應用程序無法接收已經發布到應用程序的數據。
因此,您通常會在接收端最終接收30,000字節(實際上由於IP和TCP開銷,實際上會多一點),但在某些情況下,您可能會按順序接收數據或根本不接收數據,可能是由於您和接收器之間的路由硬件故障造成的,當然不是標準,但它確實可能發生。
在這種情況下應用層應該能夠確定何時這種異常發生時或者通過使用應用協議內的序列號或通過掃描其可以以各種方式來實現IP和TCP報頭。
希望這是足以讓你想......也請參閱When sending data larger than the SendBufferSize, how will the data be received?
- 1. 上偵聽UDP套接字
- 2. Java TCP套接字偵聽器
- 3. 從tcp到udp的Java套接字
- 4. Android - 不斷偵聽UDP套接字
- 5. 調查TCP套接字空閒偵聽
- 6. TCP偵聽套接字未被創建
- 7. UDP套接字監聽
- 8. Java TCP套接字
- 9. 偵聽套接字udp和http連接的服務器代碼
- 10. 是否可以創建Java UDP套接字來偵聽所有地址?
- 11. 在偵聽套接字上的Listening套接字上接受連接(並且不再偵聽)?
- 12. 是否有可能爲Perl的套接字偵聽增加QUEUESIZE?
- 13. 監聽套接字只偵聽一次
- 14. UDP套接字
- 15. 爲什麼SO_RCVTIMEO從偵聽套接字繼承到接受的套接字?
- 16. Java套接字UDP環路
- 17. Java - 關閉UDP套接字
- 18. Python - 從兩個UDP套接字偵聽的服務器
- 19. 多UDP套接字偵聽同一端口上的特定源
- 20. Boost Asio UDP服務器套接字偵聽指定的IP
- 21. 正確的方法來停止偵聽UDP套接字與RxExtensions
- 22. 通過TCP套接字的Android發送/接收字節[]通過TCP套接字
- 23. Java TCP套接字塊readLine
- 24. 同時使用TCP和UDP套接字
- 25. 偵聽所有內容的套接字
- 26. 不斷偵聽的套接字
- 27. 套接字和TCP套接字
- 28. 原生TCP偵聽雲或Web服務器上的套接字
- 29. TCP異步套接字端口轉發
- 30. 在UDP套接字上偵聽時出現錯誤10022
藉此 [UDP連接的例子]看看(https://systembash.com/a-simple-java-udp-服務器和UDP的客戶端/) –