Vorrei connettermi ad'un indirizzo IP e leggere un'intero senza segno(host byte order) in una porta nota.
Il mio programma non va più avanti dopo l'invocazione di recvfrom(), ho pensato che rimane in attesa poiché la porta a cui sono connesso non invia nulla, ma di ciò non sono molto convinto. Quindi la mia domanda è, la funzione resta in attesa perché non riceve niente? Se no, perché non va avanti?codice:#include<stdlib.h> #include<stdio.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #define DEST_IP "141.138.199.118" #define DEST_PORT 5842 int main(void) { int sockfd; struct sockaddr_in my_addr; struct sockaddr_in dest_addr; sockfd = socket(PF_INET, SOCK_DGRAM, 0); my_addr.sin_family = AF_INET; my_addr.sin_port = 0; // sceglie una porta a caso non in uso my_addr.sin_addr.s_addr = INADDR_ANY; // usa il mio indirizzo IP memset(my_addr.sin_zero, '\0', sizeof my_addr.sin_zero); dest_addr.sin_family = AF_INET; // host byte order dest_addr.sin_port = DEST_PORT; // long, network byte order dest_addr.sin_addr.s_addr = inet_addr(DEST_IP); memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero); connect(sockfd, (struct sockaddr *)&dest_addr, sizeof dest_addr ); unsigned int buffer[4]; recvfrom( sockfd, buffer, 4, 0, (struct sockaddr *)&my_addr, (int *) sizeof(struct sockaddr) ); //si ferma qua int register i; for(i=0 ; i<4 ; i++) printf("%d° intero letto: %d",i , buffer[i]); printf("\n"); return 0; }

Rispondi quotando