使用boost :: asio :: ip :: udp时send和send_to的用法

时间:2014-07-15 18:00:40

标签: c++ linux sockets udp boost-asio

boost::asio文档中,据我所知,send用于将数据发送到连接的套接字,而send_to用于将数据发送到未连接的套接字。我使用命令nc -u -l 12345在一台计算机上侦听udp流量,并尝试从另一台计算机发送一些文本数据。我采用了blocking udp echo client的示例代码。这个例子使用send_to方法(对于未连接的套接字),我想重写它,所以它将使用send方法(对于连接的套接字),我该怎么做?如何连接udp套接字?我使用bind和我的套接字,它没有返回任何错误,但我的套接字仍未连接。是否有迹象表明我可以从我的套接字连接的系统中获取(即netstat或类似的东西)

1 个答案:

答案 0 :(得分:3)

UDP“连接”术语与TCP不同。您不会在netstat输出中看到UDP“连接”。

正如 man 7 udp 所说:

  

在套接字上调用connect(2)时,默认目标   设置地址,现在可以使用send(2)或write(2)发送数据报   没有指定目的地地址。

因此,您可以在connect上执行boost::asio::ip::udp::socket,然后在不指定端点的情况下使用send方法。查看udp::socket手册,了解您需要的方法。