Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. int server_reliable_conn(int server_sock, struct sockaddr_in* server_addr){
  2. int control;
  3. char *buff = calloc(MAXLEN, sizeof(char));
  4. socklen_t addr_len = sizeof(*server_addr);
  5.  
  6. //in attesa di ricevere SYN
  7. control = recvfrom(server_sock, buff, MAXLEN, 0, (struct sockaddr *)server_addr, &addr_len);
  8. if (control < 0) {
  9. printf("SERVER: connection failed\n");
  10. exit(-1);
  11. }
  12. if (strncmp(buff, SYN, strlen(SYN)) != 0) {
  13. printf("SERVER: connection failed(SYN)\n");
  14. exit(-1);
  15. }
  16.  
  17. //invio del SYNACK
  18. control = sendto(server_sock, SYNACK, strlen(SYNACK), 0, (struct sockaddr *)server_addr, addr_len);
  19. if (control < 0) {
  20. printf("SERVER: connection failed\n");
  21. exit(-1);
  22. }
  23.  
  24. //in attesa del ACK_SYNACK
  25. memset(buff, 0, sizeof(buff));
  26. control = recvfrom(server_sock, buff, MAXLEN, 0, (struct sockaddr *)server_addr, &addr_len);
  27. if (control < 0) {
  28. printf("SERVER: connection failed\n");
  29. exit(-1);
  30. }
  31. if (strncmp(buff, ACK_SYNACK, strlen(ACK_SYNACK)) != 0) {
  32. printf("SERVER: connection failed(ACK_SYNACK)\n");
  33. exit(-1);
  34. }
  35.  
  36. printf("SERVER: connection established\n");
  37. return(1);
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement