Advertisement
Guest User

c - client server xarentek

a guest
Oct 17th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/socket.h>
  3. #include <stdlib.h>
  4. #include <netinet/in.h>
  5. #include <string.h>
  6.  
  7. #define PORT 8080
  8. #define MAXLEN 255
  9. void die(char *error);
  10. void handleClient(int sd, struct sockaddr *sa, int length);
  11. int main(int argc, char const *argv[]) {
  12. int master_d;
  13.  
  14.  
  15. struct sockaddr_in bind_ip_port, client_ip_port;
  16. int bind_ip_port_length = sizeof(bind_ip_port);
  17. int client_ip_port_length = sizeof(client_ip_port);
  18.  
  19.  
  20. master_d = socket(AF_INET, SOCK_DGRAM, 0); // socket descriptor
  21.  
  22. if (master_d < 0) {
  23. die("Could not connect \n");
  24. }
  25. printf("Connected !\n");
  26.  
  27. if (master_d < 0) die("Socket error");
  28. printf("Socket() ok\n");
  29.  
  30.  
  31. bind_ip_port.sin_family = AF_INET;
  32. bind_ip_port.sin_addr.s_addr = inet_addr("127.0.0.1");
  33. bind_ip_port.sin_port = htons(PORT);
  34.  
  35. //fare bind
  36.  
  37. if(bind(master_d, (struct sockaddr *) &bind_ip_port, bind_ip_port_length) < 0) {
  38. die("Could not bind ! \n");
  39. }
  40. printf("Bind successful !\n");
  41.  
  42. while(1){
  43. handleClient(master_d, (struct sockaddr *)&client_ip_port, client_ip_port_length);
  44. }
  45.  
  46. close(master_d);
  47.  
  48. return 0;
  49.  
  50.  
  51. }
  52.  
  53.  
  54. void handleClient(int sd, struct sockaddr *sa, int length) {
  55.  
  56. char sendbuff[MAXLEN], recvbuff[MAXLEN];
  57. memset(sendbuff, 0, MAXLEN);
  58. memset(recvbuff, 0, MAXLEN);
  59.  
  60. int bytesrecvd = recvfrom(sd, recvbuff, MAXLEN, 0 , sa, &length);
  61. if(bytesrecvd <= 0) die("Could not receive ! \n");
  62.  
  63. printf("Bytes received ! \n");
  64.  
  65. strcpy(sendbuff,recvbuff);
  66.  
  67. int bytesent = sendto(sd, sendbuff, MAXLEN, 0 , sa ,length);
  68.  
  69. if(bytesent <= 0){
  70. die("Could not reply to client !\n");
  71. }
  72.  
  73. printf("Replied to client with %d bytes\n",bytesent);
  74. printf("%s\n",sendbuff);
  75.  
  76.  
  77.  
  78. }
  79.  
  80.  
  81. void die(char * error){
  82. fprintf(stderr , "%s.\n", error);
  83. exit(1);
  84. }
  85.  
  86.  
  87.  
  88.  
  89. #######
  90.  
  91.  
  92. client
  93. ############
  94.  
  95.  
  96. #include <stdio.h>
  97. #include <sys/socket.h>
  98. #include <stdlib.h>
  99. #include <netinet/in.h>
  100. #include <string.h>
  101.  
  102. #define PORT 8080
  103. #define MAXLEN 255
  104. void die(char *error);
  105.  
  106. int main(int argc, char const *argv[])
  107. {
  108. int master_d;
  109. char sendbuff[MAXLEN], recvbuff[MAXLEN];
  110.  
  111. struct sockaddr_in server_ip_port;
  112. int server_ip_port_length = sizeof(server_ip_port);
  113.  
  114. memset(sendbuff, 0 , MAXLEN);
  115. memset(recvbuff, 0 , MAXLEN);
  116.  
  117. master_d = socket(AF_INET, SOCK_DGRAM, 0); // socket descriptor
  118.  
  119. if(master_d < 0){
  120. die("Could not connect \n");
  121. }
  122. printf("Connected !");
  123.  
  124. if(master_d < 0) die ("Socket error");
  125. printf("Socket() ok\n");
  126.  
  127. printf("Inserisci Stringa");
  128. gets(sendbuff);
  129.  
  130. server_ip_port.sin_family = AF_INET;
  131. server_ip_port.sin_addr.s_addr = inet_addr("127.0.0.1");
  132. server_ip_port.sin_port = htons(PORT);
  133.  
  134.  
  135. int bytesent = sendto(master_d , sendbuff , MAXLEN, 0 , (struct sockaddr *) &server_ip_port, server_ip_port_length);
  136.  
  137. if(bytesent < 0) {
  138. die("Could not send any bytes !");
  139.  
  140. }
  141. printf("Bytes sent %d \n",bytesent);
  142.  
  143. int bytesrecvd = recvfrom(master_d, recvbuff , MAXLEN , 0, (struct sockaddr *)&server_ip_port, &server_ip_port_length);
  144.  
  145. if(bytesrecvd < 0) {
  146. die("Could not receive any bytes");
  147. }
  148. printf("Received %d bytes\n", bytesrecvd);
  149.  
  150. printf("%s\n",recvbuff);
  151. close(master_d);
  152. return 0;
  153.  
  154. }
  155.  
  156.  
  157. void die(char * error){
  158. fprintf(stderr , "%s.\n", error);
  159. exit(1);
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement