Guest User

Untitled

a guest
Aug 6th, 2023
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <sys/socket.h>
  4. #include <arpa/inet.h>
  5. #include <unistd.h>
  6.  
  7. int main(void){
  8. int socket_desc;
  9. struct sockaddr_in server_addr, client_addr;
  10. char server_message[2000];
  11. char 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(7789);
  30. server_addr.sin_addr.s_addr = inet_addr("192.168.3.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. printf("Did you set the ip with $ sudo ip addr add 192.168.3.1/24 dev enp5s0");
  36. return -1;
  37. }
  38.  
  39.  
  40. // send message:
  41. server_message[0] = '\0'; // empty frame, just to trigger the reponse
  42.  
  43. // Set port and IP:
  44. client_addr.sin_family = AF_INET;
  45. client_addr.sin_port = htons(7789);
  46. client_addr.sin_addr.s_addr = inet_addr("192.168.3.10");
  47.  
  48.  
  49. if (sendto(socket_desc, server_message, strlen(server_message), 0,
  50. (struct sockaddr*)&client_addr, client_struct_length) < 0){
  51. printf("Can't send\n");
  52. return -1;
  53. } else {
  54. printf("enpty UDP frame send\n");
  55. }
  56.  
  57.  
  58.  
  59. // Receive client's message:
  60. if (recvfrom(socket_desc, client_message, sizeof(client_message), 0,
  61. (struct sockaddr*)&client_addr, &client_struct_length) < 0){
  62. printf("Couldn't receive\n");
  63. return -1;
  64. }
  65.  
  66. printf("Received message from IP: %s and port: %i\n",
  67. inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  68.  
  69. printf("Msg from client: %s\n", client_message);
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. // Close the socket:
  78. close(socket_desc);
  79.  
  80. return 0;
  81. }
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment