我想要的是簡單 - 從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