Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int server_reliable_conn(int server_sock, struct sockaddr_in* server_addr){
- int control;
- char *buff = calloc(MAXLEN, sizeof(char));
- socklen_t addr_len = sizeof(*server_addr);
- //in attesa di ricevere SYN
- control = recvfrom(server_sock, buff, MAXLEN, 0, (struct sockaddr *)server_addr, &addr_len);
- if (control < 0) {
- printf("SERVER: connection failed\n");
- exit(-1);
- }
- if (strncmp(buff, SYN, strlen(SYN)) != 0) {
- printf("SERVER: connection failed(SYN)\n");
- exit(-1);
- }
- //invio del SYNACK
- control = sendto(server_sock, SYNACK, strlen(SYNACK), 0, (struct sockaddr *)server_addr, addr_len);
- if (control < 0) {
- printf("SERVER: connection failed\n");
- exit(-1);
- }
- //in attesa del ACK_SYNACK
- memset(buff, 0, sizeof(buff));
- control = recvfrom(server_sock, buff, MAXLEN, 0, (struct sockaddr *)server_addr, &addr_len);
- if (control < 0) {
- printf("SERVER: connection failed\n");
- exit(-1);
- }
- if (strncmp(buff, ACK_SYNACK, strlen(ACK_SYNACK)) != 0) {
- printf("SERVER: connection failed(ACK_SYNACK)\n");
- exit(-1);
- }
- printf("SERVER: connection established\n");
- return(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement