我有兩個自定義程序,一個發送數據流,另一個接收該數據流以進行進一步處理。是否可以將數據發送到一個TCP端口並從同一端口接收(讀取)該數據?如果不是,你可以推薦任何替代方法。任何幫助將不勝感激。 (這兩個程序運行在同一臺機器上)發送和接收來自同一TCP端口的數據包
回答
TCP連接有兩端,允許雙向通信。每端的發送端口是另一端的接收端口。情況總是如此。
如果你問每個端口的發送端口是否可以與另一端的接收端口相同,答案是肯定的。情況總是如此。
如果你問如果兩端可以有相同的發送和接收端口,答案是:
1)如果源IP地址是在兩端具有相同的(比如說127.0.0.1
),那麼絕對不會。如果可能的話,就不可能區分這兩個端點。 2)如果兩次發送的源IP地址不同(例如一端爲127.0.0.2
,另一端爲127.0.0.3
),這在理論上是可能的,而且如果您使用兩臺不同的機器,則很容易發生。但據我所知,如果兩端都在同一臺機器上,那麼通用TCP/IP協議棧就不允許以這種方式使用單個端口。一旦您在端口上偵聽,您不允許將該端口用作源端口。如果您使用端口作爲源端口,則不允許您開始收聽。
但我覺得你問的是錯誤的問題。如果你澄清了你想要做什麼以及爲什麼,你可能會得到一個不同的問題的答案,這對你會有更多的幫助。
如果它們綁定到不是0.0.0.0的不同本地IP地址,但是它們是否可以通信是另一個問題,則可以在本地使用相同的端口。 – EJP
也許'bind(127.0.0.1:9999); listen()'一端和'bind(127.0.0.2:9999);連接(127.0.0.1:9999)'在另一端? –
- 1. TCP - 發送和接收TCP/IP數據
- 2. Cpp socket - TCP傳輸(用同一端口發送然後接收)
- 3. 通過TCP接收和發送數據
- 4. 併發發送和接收數據在一個端口與udpclient
- 5. android發送和接收TCP包
- 6. Node.js發送和接收來自任何客戶端的數據包
- 7. 通過套接字和端口發送和接收數據
- 8. 從tcp端口接收數據
- 9. 重用線程和UdpClient發送和接收同一端口
- 10. TCP不接收已發送的數據
- 11. 手動選擇TCP上的一個接口來發送數據
- 12. 在發送方和接收方捕獲不同的tcp數據包
- 13. 工具發送數據到TCP端口
- 14. 聽同一端口上的TCP和UDP數據包
- 15. 套接字接收和發送數據端口C
- 16. 如何在同一端口上發送和接收UDP?
- 17. 發送/接收數據包與TCP套接字
- 18. 端口編號如何工作以接收MODBUS TCP數據包?
- 19. 自動發送和接收來自HTML頁面的數據
- 20. 使用Flask發送和接收來自同一頁面的數據
- 21. 通過TCP套接字發送和接收數據的問題
- 22. 如何發送和接收數據的TCP套接字(C/C++)
- 23. 線程接收來自IP和端口的數據
- 24. SFML TCP數據包接收
- 25. 同時接收和發送數據報
- 26. 打開多個COM端口和發送/接收數據
- 27. tcp套接字數據發送xml包
- 28. 可以通過兩個不同的端口發送和接收數據
- 29. 發送和接收套接字(TCP/IP)
- 30. 我如何發送和接收同一端口上同時使用套接字
你的意思是'是否可以從TCP端口發送數據並從同一端口接收數據?' – Legman
因爲這兩個程序都運行在同一臺機器上,所以不必使用套接字(它們是爲了在機器之間使用,但也可以在同一臺機器上使用),您可以使用其他方式[進程間溝通](https://en.wikipedia.org/wiki/Inter-process_communication)如管道或unix插座 – EarthDragon
@Legman .yeah我錯過了問號。 – Rfox