Advertisement
Bewin

UDP Server

Mar 24th, 2025
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <sys/socket.h>
  4. #include <arpa/inet.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7.  
  8. int main(void){
  9.     int socket_desc;
  10.     struct sockaddr_in server_addr, client_addr;
  11.     char server_message[2000], client_message[2000];
  12.     int client_struct_length = sizeof(client_addr);
  13.    
  14.     // Clean buffers:
  15.     memset(server_message, '\0', sizeof(server_message));
  16.     memset(client_message, '\0', sizeof(client_message));
  17.    
  18.     // Create UDP socket:
  19.     socket_desc = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  20.    
  21.     if(socket_desc < 0){
  22.         printf("Error while creating socket\n");
  23.         return -1;
  24.     }
  25.     printf("Socket created successfully\n");
  26.    
  27.     // Set port and IP:
  28.     server_addr.sin_family = AF_INET;
  29.     server_addr.sin_port = htons(2000);
  30.     server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  31.    
  32.     // Bind to the set port and IP:
  33.     if(bind(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0){
  34.         printf("Couldn't bind to the port\n");
  35.         return -1;
  36.     }
  37.     printf("Done with binding\n");
  38.    
  39.     printf("Listening for incoming messages...\n\n");
  40.    
  41.     // Receive client's message:
  42.     if (recvfrom(socket_desc, client_message, sizeof(client_message), 0,
  43.          (struct sockaddr*)&client_addr, &client_struct_length) < 0){
  44.         printf("Couldn't receive\n");
  45.         return -1;
  46.     }
  47.     printf("Received message from IP: %s and port: %i\n",
  48.            inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  49.    
  50.     printf("Msg from client: %s\n", client_message);
  51.    
  52.     // Respond to client:
  53.     strcpy(server_message, client_message);
  54.    
  55.     if (sendto(socket_desc, server_message, strlen(server_message), 0,
  56.          (struct sockaddr*)&client_addr, client_struct_length) < 0){
  57.         printf("Can't send\n");
  58.         return -1;
  59.     }
  60.    
  61.     // Close the socket:
  62.     close(socket_desc);
  63.    
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement