Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换C++/将CLI.Net套接字插入boost::asio套接字?_.net_C++_Sockets_Boost_C++ Cli - Fatal编程技术网

如何转换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都会关闭套接字并指向您不期望的位置 所以你需要一些类似的东西:

我想要的是从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);

完整答案(已测试)


现在最好使用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);