似乎boost :: asio爲每個協議定義了一個單獨的端點類,如果您想要在特定端點上執行UDP和TCP操作(不得不從一個端口轉換到另一個端口),這是令人煩惱的。我總是將端點視爲IP地址(v4或v6)和端口號,而不考慮TCP或UDP。是否有顯着的差異來證明單獨的課程是合理的(即不能在TCP ::插座和udp ::插座接受類似IP端點::?)Boost :: Asio中tcp :: endpoint和udp :: endpoint有什麼區別?
6
A
回答
4
插槽分別創建不同
socket(PF_INET, SOCK_STREAM)
的TCP和
socket(PF_INET, SOCK_DGRAM)
用於UDP的
。
我懷疑這是Boost.Asio中不同類型的原因。有關更多信息,請參見man 7 udp
或man 7 tcp
,因爲您沒有標記您的問題,所以我假設Linux。
要解決您的問題,請從TCP端點提取IP和端口並實例化UDP端點。
#include <boost/asio.hpp>
#include <iostream>
int
main()
{
using namespace boost::asio;
ip::tcp::endpoint tcp(
ip::address::from_string("127.0.0.1"),
123
);
ip::udp::endpoint udp(
tcp.address(),
tcp.port()
);
std::cout << "tcp: " << tcp << std::endl;
std::cout << "udp: " << udp << std::endl;
return 0;
}
樣品調用:
./a.out
tcp: 127.0.0.1:123
udp: 127.0.0.1:123
2
TCP和UDP端口是不同的。例如,只要一個使用TCP而另一個使用UDP,兩個獨立的程序都可以在單個端口上偵聽。這就是端點類不同的原因。
相關問題
- 1. @Endpoint和@WebService之間有什麼區別?
- 2. 單向TCP和UDP有什麼區別?
- 3. boost :: asio UDP廣播
- 4. udp(4)和udp(6)有什麼區別?
- 5. Boost - ASIO與IOStreams TCP
- 6. WaitForMultipleObjects和boost :: asio在多個windows :: basic_handle之間有什麼區別?
- 7. boost :: io_service poll_one和run_one有什麼區別?
- 8. boost :: asio :: ip :: tcp :: socket :: cancel和socket :: close之間的區別是什麼不同
- 9. Boost asio udp waitForReadyRead
- 10. webhttpbinding endpoint中的合約是什麼?
- 11. PayPalAPI EndPoint
- 12. Google Cloud Endpoint和Objectify
- 13. Boost asio - udp服務器
- 14. UDP和TCP數據包有什麼區別?你用它們做什麼?
- 15. 的boost :: ASIO不起作用
- 16. Reverse和Bind TCP有什麼區別?
- 17. boost :: asio tcp async_read永遠不會返回
- 18. boost :: static_pointer_cast vs boost :: shared_static_cast有什麼區別?
- 19. 如何使用boost :: ASIO
- 20. Mule Servlet Endpoint
- 21. WCF HTTP EndPoint卷
- 22. AEM JSON Endpoint
- 23. 使用Boost :: asio的TCP/IP客戶端
- 24. WCF Net.Pipe Endpoint
- 25. WCF MEX Endpoint
- 26. Google Endpoint Verification
- 27. Heroku Java Websocket Endpoint
- 28. Boost asio set_option error
- 29. TCP和UDP之間的區別
- 30. UDP端點和UDP客戶端有什麼區別?