2011-09-09 56 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

相關問題