2011-09-09 2 views
3

내가 원하는 것은 C++/CLI .Net 소켓에서 새로운 부스트 asio 소켓을 만드는 코드 샘플이다. 그런 것을 만드는 법?C++/CLI .Net 소켓을 boost :: asio 소켓으로 변환하는 방법?

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

정확히 무엇을해야할까요? Boost :: asio 소켓을 .NET으로 대체 하시겠습니까? – Simon

+0

아니요 - havicg를 만들고 연결을 허용합니다 .Net 측에서 Boost :: asio 소켓으로 .Net 소켓 인스턴스를 변환합니다. – Rella

+0

.NET 소켓을 Boost :: asio 소켓으로 변환한다는 것은 무엇을 의미합니까? 코드 수준에서 이식? 그들 사이의 TCP를 통해 연결을 만들었습니까? 또는? – Simon

답변

4

당신이 봤어 : 여기

는 내가하고 싶은 것이의 의사 코드이다?

b.assign(a.Handle.ToInt32()); 

또한 당신이 B 모두를 얻을 수 있으며,이 소켓을 닫고 기대하지 않습니다 가리 킵니다 당신이 WSADuplicateSocket이를 사용해야합니다 그들은을 확인합니다. (테스트)

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

관련 문제