Advertisement
Guest User

Untitled

a guest
Mar 16th, 2016
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void DLLEXPORT reopen_bcast_socket()
  2. {
  3.     if( BCASTSocket != INVALID_SOCKET ) {
  4.         closesocket(BCASTSocket);
  5.     }
  6.     if( (BCASTSocket = socket(AF_INET, SOCK_DGRAM, 0)) != INVALID_SOCKET ) {
  7.         BOOL bVal = TRUE;
  8.         if( setsockopt(BCASTSocket, SOL_SOCKET, SO_BROADCAST, (const char*)&bVal, sizeof(bVal)) == SOCKET_ERROR ||
  9.             setsockopt(BCASTSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&bVal, sizeof(bVal)) == SOCKET_ERROR ) {
  10.             closesocket(BCASTSocket);
  11.             BCASTSocket = INVALID_SOCKET;
  12.         } else {
  13.             struct sockaddr_in local;
  14.             local.sin_family = AF_INET;
  15.             local.sin_addr.S_un.S_addr = htonl(bBCastFilterIP ? INADDR_LOOPBACK : INADDR_ANY);
  16.             local.sin_port = htons(wBCastUdpPort);
  17.             if( bind(BCASTSocket, (const sockaddr*)&local, sizeof(local)) == SOCKET_ERROR ) {
  18.                 closesocket(BCASTSocket);
  19.                 BCASTSocket = INVALID_SOCKET;
  20.             }
  21.         }
  22.     }
  23. }
  24.  
  25. void broadcast_command(char *arg)
  26. {
  27.     if( BCASTSocket == INVALID_SOCKET ) {
  28.         /* ... */
  29.     } else {
  30.         /* ... */
  31.         struct sockaddr_in local;
  32.  
  33.         local.sin_family = AF_INET;
  34.         local.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);
  35.         local.sin_port = htons(wBCastUdpPort);
  36.  
  37.         int len = strlen(result), sent;
  38.         sent = sendto(BCASTSocket, result, len, 0, (const sockaddr*)&local, sizeof(local));
  39.         if(sent != len) {
  40.             /* ... */
  41.         }
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement