title: UDP Server with 2 clients, how to assign a specific port to them
body: <p>I have a small problem , I have a Server and Client applications.</p>
  
  <p>And here what is I want, when I run Server +  Client the messages are received from Port 15011 because I've bind it inside the Client file, but I want to run, 2 clients at once, then I message is received from Port 15011 and one is randomly assigned and I want the 2nd clients message to be received from 15012.</p>
  
  <p>Should I have a IF statement that it check if that port free it is then take it else just that taken port + 1, is that even possible. Any suggestion would be great help to me.</p>
  
  <p>Thanks in ahead !</p>
  
  <pre><code>// UDP client that uses blocking sockets
  #define _WINSOCK_DEPRECATED_NO_WARNINGS
  
  #define WIN32_LEAN_AND_MEAN
  
  #include &lt;windows.h&gt;
  #include &lt;winsock2.h&gt;
  #include &lt;ws2tcpip.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;stdio.h&gt;
  #include "conio.h"
  
  #pragma comment (lib, "Ws2_32.lib")
  #pragma comment (lib, "Mswsock.lib")
  #pragma comment (lib, "AdvApi32.lib")
  
  #define SERVER_IP_ADDRESS "127.0.0.1"       // IPv4 address of server
  #define SERVER_PORT 15000                   // Port number of server that will be used for communication with clients
  #define BUFFER_SIZE 512                     // Size of buffer that will be used for sending and receiving messages to client
  
  
  int main()
  {
      // Server address structure
      sockaddr_in serverAddress, clientAdress;
  
      // Size of server address structure
      int sockAddrLen = sizeof(serverAddress);
  
      // Buffer that will be used for sending and receiving messages to client
      char dataBuffer[BUFFER_SIZE];
  
      // WSADATA data structure that is used to receive details of the Windows Sockets implementation
      WSADATA wsaData;
  
      // Initialize windows sockets for this process
      int iResult = WSAStartup(MAKEWORD(2, 2), &amp;wsaData);
  
      // Check if library is succesfully initialized
      if (iResult != 0)
      {
          printf("WSAStartup failed with error: %d\n", iResult);
          return 1;
      }
  
      // Initialize memory for address structure
      memset((char*)&amp;serverAddress, 0, sizeof(serverAddress));
  
      // Initialize address structure of server
      serverAddress.sin_family = AF_INET;                             // IPv4 address famly
      serverAddress.sin_addr.s_addr = inet_addr(SERVER_IP_ADDRESS);   // Set server IP address using string
      serverAddress.sin_port = htons(SERVER_PORT);                    // Set server port
  
  
      memset((char*)&amp;clientAdress, 0, sizeof(clientAdress));
  
      // Initialize address structure of server
      clientAdress.sin_family = AF_INET;                              // IPv4 address famly
      clientAdress.sin_addr.s_addr = inet_addr(SERVER_IP_ADDRESS);    // Set server IP address using string
      clientAdress.sin_port = htons(15011);                   // Set server port
  
  
      // Create a socket
      SOCKET clientSocket = socket(AF_INET,      // IPv4 address famly
          SOCK_DGRAM,   // Datagram socket
          IPPROTO_UDP); // UDP protocol
  
  
      iResult = bind(clientSocket, (SOCKADDR *)&amp;clientAdress, sizeof(clientAdress));
  
  
  // Check if socket creation succeeded
      if (clientSocket == INVALID_SOCKET)
      {
          printf("Creating socket failed with error: %d\n", WSAGetLastError());
          WSACleanup();
          return 1;
      }
      while (1) {
          printf("Enter message to send:\n");
  
          // Read string from user into outgoing buffer
          gets_s(dataBuffer, BUFFER_SIZE);
  
          // Send message to server
          iResult = sendto(clientSocket,                      // Own socket
              dataBuffer,                     // Text of message
              strlen(dataBuffer),             // Message size
              0,                                  // No flags
              (SOCKADDR *)&amp;serverAddress,     // Address structure of server (type, IP address and port)
              sizeof(serverAddress));         // Size of sockadr_in structure
  
      // Check if message is succesfully sent. If not, close client application
          if (iResult == SOCKET_ERROR)
          {
              printf("sendto failed with error: %d\n", WSAGetLastError());
              closesocket(clientSocket);
              WSACleanup();
              return 1;
          }
      }
      // Only for demonstration purpose
      printf("Press any key to exit: ");
      _getch();
  
      // Close client application
      iResult = closesocket(clientSocket);
      if (iResult == SOCKET_ERROR)
      {
          printf("closesocket failed with error: %d\n", WSAGetLastError());
          WSACleanup();
          return 1;
      }
  
      // Close Winsock library
      WSACleanup();
  
      // Client has succesfully sent a message
      return 0;
  }
  </code></pre>