2011-09-09 53 views
3

我想要的是简单 - 从C++/CLI .Net套接字创建新的boost asio套接字的代码示例。如何创建这样的事情?如何将C++/CLI .Net套接字转换为boost :: asio套接字?

这里是我想要做什么伪代码:

.net::socket a; 
boost::asio::socket b; 
b.assign(a.nativeWin32Socket()); 
+0

你究竟想要做什么?用.NET的替换一个boost :: asio套接字? – Simon

+0

不 - 我想havicg在.Net端创建并接受连接,将.Net Socket实例转换为Boost :: asio套接字。 – Rella

+0

“将.NET Socket转换为Boost :: asio Socket”是什么意思?在代码级移植?通过它们之间的TCP建立连接?要么? – Simon

回答

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复制套接字:

+0

也许你可以向我们提供一些关于相关主题的更全面的,经过测试的代码答案http://stackoverflow.com/q/7502644/434051(Asio to .Net) – Rella

相关问题