我想要的很简单——创建一个新的boost asio socket从C++/CLI .Net socket代码样本。如何创建这样的东西?
以下是我想要做的伪代码:
以下是我想要做的伪代码:
.net::socket a;
boost::asio::socket b;
b.assign(a.nativeWin32Socket());
.net::socket a;
boost::asio::socket b;
b.assign(a.nativeWin32Socket());
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复制套接字是一个好主意: