Datagram Unix socket problem
25.07.2006. u 13:49 · pre 246 meseci
#1
Server prihvata string od klijenta i šalje isti taj string kao odgovor sa
dok klijent šalje string i prima odgovor sa
Problem nastaje kada server sa sendto() odgovara klijentu. Ako je socket kreiran kao Internet socket, onda sve lepo radi: server pošalje odgovor, klijent ga dobija i ispisuje. Medjutim, ako je socket kreiran kao Unix socket, server ne uspeva da pošalje sa sendto() već vraća status -1. Zašto? (Kod za oba slučaja je isti osim u delu gde se kreiraju različiti tipovi socketa.)
Pozdrav!
Code:
bytes_no = recvfrom(sock_fd, buf, 100, 0, (struct sockaddr*)&client_addr, &addr_len );
buf[bytes_no] = '\0';
printf("\nReceived '%s' with %d bytes.", buf, bytes_no);
bytes_no = sendto(sock_fd, buf, strlen(buf) + 1, 0, (struct sockaddr*)&client_addr, sizeof(struct sockaddr));
printf("\n%d sent", bytes_no);
bytes_no = recvfrom(sock_fd, buf, 100, 0, (struct sockaddr*)&client_addr, &addr_len );
buf[bytes_no] = '\0';
printf("\nReceived '%s' with %d bytes.", buf, bytes_no);
bytes_no = sendto(sock_fd, buf, strlen(buf) + 1, 0, (struct sockaddr*)&client_addr, sizeof(struct sockaddr));
printf("\n%d sent", bytes_no);
dok klijent šalje string i prima odgovor sa
Code:
printf("\nRequest: ");
scanf("%s", message);
sendto(sock_fd, message, strlen(message) + 1, 0, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr));
memset(message, 0, 100);
bytes_no = recvfrom(sock_fd, message, 100, 0, (struct sockaddr*)&sock_addr, &addr_len);
printf("Received '%s' with %d bytes.", message, bytes_no);
printf("\nRequest: ");
scanf("%s", message);
sendto(sock_fd, message, strlen(message) + 1, 0, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr));
memset(message, 0, 100);
bytes_no = recvfrom(sock_fd, message, 100, 0, (struct sockaddr*)&sock_addr, &addr_len);
printf("Received '%s' with %d bytes.", message, bytes_no);
Problem nastaje kada server sa sendto() odgovara klijentu. Ako je socket kreiran kao Internet socket, onda sve lepo radi: server pošalje odgovor, klijent ga dobija i ispisuje. Medjutim, ako je socket kreiran kao Unix socket, server ne uspeva da pošalje sa sendto() već vraća status -1. Zašto? (Kod za oba slučaja je isti osim u delu gde se kreiraju različiti tipovi socketa.)
Pozdrav!
Potpis
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
Re: Datagram Unix socket problem
Re: Datagram Unix socket problem