gpt4 book ai didi

.net - 如何将 boost::asio 套接字转换为 C++/CLI .Net 套接字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:42 26 4
gpt4 key购买 nike

我想要的很简单 - 从 boost asio 套接字创建新的 C++/CLI .Net 套接字的代码示例。如何创建这样的东西?

这是我想做的伪代码:

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

顺便说一句:这里是如何turn C++/CLI .Net socket into boost::asio socket.

最佳答案

您不能“分离”一个 Boost.ASIO 套接字。您可以使用 native_handle()成员函数获取 SOCKET来自 asio::socket 的句柄对象,但您必须确保 asio::socket在您完成 SOCKET 之前,对象不会被破坏.它继续持有原生 SOCKET 的所有权并在它的析构函数被调用时关闭它。

正如 André 建议的那样,您可以复制套接字句柄。但是,我不会考虑复制这个安全套接字,因为 Boost.ASIO 会自动关联 native SOCKET使用 I/O 完成端口处理。如果 .NET 套接字包装器或某些其他代码试图将复制的套接字与不同的 I/O 完成端口相关联,则会发生错误。我知道 .NET 2.0 Socket 类实际上关联了 SOCKET处理异步操作的 I/O 完成端口。然而,这在更新的版本中可能已经改变。

关于.net - 如何将 boost::asio 套接字转换为 C++/CLI .Net 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com