Boost::Asio 中的 tcp::endpoint 和 udp::endpoint 有什么区别?
似乎 boost::asio 为每个协议定义了一个单独的端点类,如果您想在特定端点上执行 UDP 和 TCP 操作(必须从一个端点转换为另一个端点),这会很烦人。我一直只是将端点视为 IP 地址(v4 或 v6)和端口号,而不管 TCP 或 UDP。
是否存在显着差异可以证明单独分类是合理的? (即 tcp::socket
和 udp::socket
不能同时接受 ip::endpoint
之类的东西吗?)
It seems boost::asio
defines a separate endpoint class for each protocol, which is irritating if you want to perform both UDP and TCP operations on a particular endpoint (have to convert from one to the other). I'd always just thought of an endpoint as an IP address (v4 or v6) and the port number, regardless of TCP or UDP.
Are there significant differences that justify separate classes? (i.e. couldn't both tcp::socket
and udp::socket
accept something like ip::endpoint
?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
套接字创建方式不同
TCP 和
UDP 的
。我怀疑这就是 Boost.Asio 中不同类型的原因。请参阅
man 7 udp
或man 7 tcp
了解更多信息,我假设是 Linux,因为您没有标记您的问题。要解决您的问题,请从 TCP 端点提取 IP 和端口并实例化 UDP 端点。
示例调用:
The sockets are created differently
for TCP, and
for UDP.
I suspect that is the reason for the differing types in Boost.Asio. See
man 7 udp
orman 7 tcp
for more information, I'm assuming Linux since you didn't tag your question.To solve your problem, extract the IP and port from a TCP endpoint and instantiate a UDP endpoint.
sample invocation:
TCP 和 UDP 端口不同。例如,两个单独的程序都可以监听同一个端口,只要一个程序使用 TCP,另一个程序使用 UDP。这就是端点类不同的原因。
TCP and UDP ports are different. For example, two separate programs can both listen on a single port as long as one uses TCP and the other uses UDP. This is why the endpoints classes are different.