我想要的是简单 - 从C++/CLI .Net套接字创建新的boost asio套接字的代码示例。如何创建这样的事情?如何将C++/CLI .Net套接字转换为boost :: asio套接字?
这里是我想要做什么伪代码:
.net::socket a;
boost::asio::socket b;
b.assign(a.nativeWin32Socket());
我想要的是简单 - 从C++/CLI .Net套接字创建新的boost asio套接字的代码示例。如何创建这样的事情?如何将C++/CLI .Net套接字转换为boost :: asio套接字?
这里是我想要做什么伪代码:
.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复制套接字:
也许你可以向我们提供一些关于相关主题的更全面的,经过测试的代码答案http://stackoverflow.com/q/7502644/434051(Asio to .Net) – Rella
你可以使用assign将本地套接字分配给Boost asio套接字。请参阅How to create a Boost.Asio socket from a native socket的接受答案。
你究竟想要做什么?用.NET的替换一个boost :: asio套接字? – Simon
不 - 我想havicg在.Net端创建并接受连接,将.Net Socket实例转换为Boost :: asio套接字。 – Rella
“将.NET Socket转换为Boost :: asio Socket”是什么意思?在代码级移植?通过它们之间的TCP建立连接?要么? – Simon