如何转换C++/将CLI.Net套接字插入boost::asio套接字?
我想要的是从C++/CLI.Net套接字创建新boost asio套接字的简单代码示例。如何创造这样的东西 下面是我想做的伪代码:如何转换C++/将CLI.Net套接字插入boost::asio套接字?,.net,c++,sockets,boost,c++-cli,.net,C++,Sockets,Boost,C++ Cli,我想要的是从C++/CLI.Net套接字创建新boost asio套接字的简单代码示例。如何创造这样的东西 下面是我想做的伪代码: .net::socket a; boost::asio::socket b; b.assign(a.nativeWin32Socket()); 你试过了吗 b.assign(a.Handle.ToInt32()); 还要注意的是,您需要使用WSADuplicateSocket,因为您可能会发现b和a都会关闭套接字并指向您不期望的位置 所以你需要一些类似的东西:
.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);
完整答案(已测试)
现在最好使用WSADuplicateSocket复制套接字:您可以使用它将本机套接字分配给Boost asio套接字。查看已接受的答案。您到底想做什么?用.NET套接字替换boost::asio套接字?否-我希望在.NET端创建并接受连接,以将.NET套接字实例转换为boost::asio套接字。您所说的“将.NET套接字转换为boost::asio套接字”是什么意思?代码级移植?他们之间通过TCP建立了连接?还是?@ Kabumbus:可能你可以使用系统的句柄属性的值::NET::Socket::Socket类。@ Rexx:C++有一个.NET版本:它被称为C++ + CLI,在这个问题中被引用。Kabumbus:直接打开boost.asio套接字不是更容易吗?也许您可以为我们提供一些关于相关主题(asio to.Net)的更完整、经过测试的代码答案
SOCKET native = a->Handle.ToInt32();
// Now native is a real socket
b.assign(boost::asio::ip::tcp::v4(), native);