2013-06-11 4 views
0

그래서 분명히 Winsock2를 상응하는, 도움이 필요. 나는 ISATAP 터널링을 사용하는 P2P IM 프로그램을 작성 중이다. netsh를 사용하여 ISATAP 터널 인터페이스를 활성화했지만 WSAIoctl()에 명령을 보내어 IPv6 ISATAP 터널 인터페이스에 소켓을 설정하는 방법을 모르겠습니다.인터페이스 IOCTL은 : 매개 변수로 <code>ifreq</code> 구조를 그대로 사용하거나 인터페이스에 소켓을 장착에 대한 명확한 옵션이 없습니다 <code>ioctlsocket()</code> 및 <code>WSAIoctl()</code> 있습니다 <code>ioctl()</code>의

+0

어떤'ioctl()'연산을 WinSock으로 정확히 포팅하려고합니까? WinSock은 WinSock과 동등한 가능성이 있습니다. –

+0

SIOCADDTUNNEL을 이식하려고합니다. Win8 PowerShell에서 ipconfig 명령을 사용하고 isatap 어댑터 인터페이스를 활성화했지만 소켓을 특정 인터페이스와 연관시키는 방법을 모르겠습니다. –

답변

1

WinSock 소켓은 bind()을 통해 특정 인터페이스에 바인딩 할 수 있으며 setsockopt()을 통해 구성 할 수도 있습니다. 예를 들어, 인터페이스와 관련된 필드를 포함합니다 (IP_ADD_MEMBERSHIPIP_DROP_MEMBERSHIP 소켓 옵션 정의)를 ip_mreq 구조 및 구조 ip_mreq_source합니다 (IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE 정의하고 IP_UNBLOCK_SOURCE 소켓 옵션)가있다.

+0

bind() 함수는 소켓을 IP 주소에 바인드합니다. Linux 소켓에서는 setsockopt() 및 ioctl()을 사용하여 특정 어댑터 네트워크 인터페이스와 소켓을 연관시킬 수 있습니다. Windows는이 프로세스를 매우 까다로워하게 만듭니다. –

+0

WinSock은 다른 플랫폼만큼 어댑터와 IP 주소를 구별하지 않습니다. 어쨌든 어댑터에 IP가 할당되므로 IP를 소켓에 바인딩하면 IP가 할당 된 어댑터에 바인딩됩니다. 그러나 어댑터 인터페이스 정보를 얻기위한 API가 있으며 멀티 캐스팅과 같은 일부 소켓 작업은 어댑터 인터페이스를 사용합니다. –