Guest User

Dual Stack IPv6 test Client

a guest
May 26th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <WinSock2.h>
  2. #include <WS2tcpip.h>
  3. #include <iostream>
  4. #pragma comment( lib, "WS2_32.lib" )
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char* argv[])
  9. {
  10.     int status;
  11.     WSADATA WsaData;
  12.     if(WSAStartup( MAKEWORD(2,2), &WsaData ) != NO_ERROR)
  13.     {
  14.         cout << "Could not initialize sockets!\n";
  15.     }
  16.  
  17.     int sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
  18.  
  19.     char option = '0';
  20.     status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &option, sizeof option);
  21.  
  22.     if(status != 0)
  23.     {
  24.         printf("Could not set socket to dual-stack mode: %d\n", status);
  25.     }
  26.  
  27.     struct sockaddr_in6 localAddr, toAddr;
  28.  
  29.     memset(&localAddr, 0, sizeof(localAddr));
  30.     localAddr.sin6_family = AF_INET6;
  31.     localAddr.sin6_port   = htons(28961);
  32.     localAddr.sin6_addr   = in6addr_any;
  33.  
  34.     status = bind(sock, (struct sockaddr *)&localAddr, sizeof(localAddr));
  35.  
  36.     if(status != 0)
  37.     {
  38.         printf("Could not bind socket on address 28961: %d\n", status);
  39.     }
  40.  
  41.     memset(&toAddr, 0, sizeof(toAddr));
  42.     toAddr.sin6_family = AF_INET6;
  43.     toAddr.sin6_port   = htons(28960);
  44.     inet_pton(AF_INET6, "::1", &(toAddr.sin6_addr));
  45.     while(true){
  46.     status = sendto(sock, "blabla", 7, 0, (struct sockaddr*)&toAddr, sizeof(toAddr));
  47.     cout << status;
  48.     cout << "test" << endl;
  49.     cin.get();
  50.     }
  51.     WSACleanup();
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment