【问题标题】:Can we create boost socket with a socket already open?我们可以使用已经打开的套接字创建 boost 套接字吗?
【发布时间】:2012-07-18 08:41:39
【问题描述】:

我有一个代码可以通过 stunServer 为我的点对点软件创建一个套接字,我想知道是否可以在套接字已经打开的情况下创建一个 boost::udp::socket ?

我已经在 boost 文档中进行了搜索,但没有发现任何允许这样做的内容。

【问题讨论】:

  • 你是说绑定到本地地址,还是连接到同一个主机?您可以将 TCP 和 UDP 套接字绑定到同一个端口,因为协议不同,但您不能将两个 UDP 套接字绑定到同一个本地端口。
  • 我认为他的意思是使用现有文件句柄构造boost::udp::socket 的实例。 (答案是肯定的,使用assign 成员函数。)

标签: c++ sockets boost boost-asio


【解决方案1】:

是的。

io_service ios;
ip::udp::socket socket(ios);
int native_socket = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
socket1.assign(ip::udp::v4(), native_socket);

请参阅this sample code 了解更多信息。

【讨论】:

  • 我有一个例外:“无效参数”或“文件存在”,如果我的套接字是用套接字打开的,并且在绑定之后。行得通吗? ——
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多