int m_nSocket6;
sockaddr_in6 m_address_6;
/*created the socket*/
m_nSocket6 = socket(AF_INET6, SOCK_DGRAM, 0);
int ret;
/* Set socket buffer size */
int buffer_size;
ret = setsockopt(m_nSocket, SOL_SOCKET, SO_RCVBUF, (char*) &buffer_size, sizeof(buffer_size));
/* Set socket timeout */
int timeout = m_nTimeout;
ret = setsockopt(m_nSocket, SOL_SOCKET, SO_RCVTIMEO, (char*) &timeout, sizeof(timeout));
/*Multicast*/
int yes = m_nMulticast; //1 = enabled
ret = setsockopt(m_nSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&yes, sizeof(yes));
/*bind*/
memset((char *)&abc, 0, sizeof(m_address6));
m_address6.ss_family = AF_UNSPEC;
m_address6.sin6_family = AF_INET6;
m_address_6.sin6_addr = in6addr_any;
m_address6.sin6_port = htons((u_short)m_nPort);
ret = bind(m_nSocket6, (struct sockaddr*) &abc, sizeof(abc));
/*receiving the packets*/
recvfrom(m_nSocket, m_sBuffer, UPD_DATAGRAM_BUFFER_SIZE, 0, (struct sockaddr*) &m_address, &server_length);
0
A
답변
2
단일 소켓 모두 IPv4 및 IPv6 트래픽, 당신은 듀얼 스택을 만들어야합니다 를 사용하기 위해서 리눅스에서 일하고 있었다 소켓은 IPV6_V6ONLY
옵션이 비활성화 된 IPv6 소켓입니다.
자세한 내용은 MSDN 문서를 참조하십시오 :
Dual-Stack Sockets for IPv6 Winsock Applications 서비스 팩 1 (SP1) Windows XP에서 IPv4와 IPv6 모두를 지원하기 위해
및 Windows Server 2003에서, 응용 프로그램이 두 개의 소켓, IPv4와 함께 사용하기위한 하나의 소켓 및 IPv6과 함께 사용하기위한 하나의 소켓을 만듭니다. 이 두 소켓은 응용 프로그램에서 개별적으로 처리해야합니다.
Windows Vista 이상에서는 IPv6 및 IPv4 트래픽을 모두 처리 할 수있는 단일 IPv6 소켓을 만들 수 있습니다.. 예를 들어, IPv6 용 TCP 수신 대기 소켓이 만들어지고 이중 스택 모드로 전환되어 포트 5001에 바인딩됩니다.이 이중 스택 소켓은 포트 5001에 연결하는 IPv6 TCP 클라이언트와 포트 5001에 연결하는 IPv4 TCP 클라이언트의 연결을 허용 할 수 있습니다. 이 기능을 사용하면 크게 단순화 된 응용 프로그램 설계가 가능하며 두 개의 개별 소켓에서 게시 작업에 필요한 자원 오버 헤드를 줄일 수 있습니다.
안녕하세요, stackoverflow.com. [도움말 페이지] (http://stackoverflow.com/help), 특히 [여기서 어떤 주제에 관해서 물어볼 수 있습니까?] (http://stackoverflow.com/help/) 섹션을 읽어보십시오. on-topic) 및 [ "어떤 유형의 질문을하지 않아야합니까?"] (http://stackoverflow.com/help/dont-ask). 또한 [둘러보기] (http://stackoverflow.com/tour)와 [좋은 질문을하는 방법에 대해 읽어보십시오.] (http://stackoverflow.com/help/how-to-ask). 마지막으로 [Minimal, ** Complete ** 및 Verifiable Example] (http://stackoverflow.com/help/mcve)를 만드는 방법을 배우십시오. –
[여기] (https://stackoverflow.com/questions/8835322/api-using-sockaddr-storage) 및 [여기] (http://www.tenouk.com/Winsock/Winsock2example7.html)를보십시오. –