我想要的是简单的 - 从C ++ / CLI .Net socket创建新的boost asio套接字的代码示例。如何创造这样的东西?
以下是我想要做的伪代码:
.net::socket a;
boost::asio::socket b;
b.assign(a.nativeWin32Socket());
答案 0 :(得分:4)
你试过吗?
b.assign(a.Handle.ToInt32());
另请注意,您需要使用WSADuplicateSocket,因为您可能会得到b和a将关闭套接字并指出您不期望的内容。
所以你需要这样的东西:
SOCKET native = WSADuplicateSocket(a.Handle.ToInt32(),...);
b.assign(native);
完整答案(已测试)
SOCKET native = a->Handle.ToInt32();
// Now native is a real socket
b.assign(boost::asio::ip::tcp::v4(), native);
现在最好使用WSADuplicateSocket复制套接字:
答案 1 :(得分:2)
您可以使用assign将本地套接字分配给Boost asio套接字。请参阅How to create a Boost.Asio socket from a native socket的接受答案。