Ciao ragazzi
ho implementato per motivi puramente educativi ho implementato questi due programmi client server!Per comunicare utilizzo i socket, per funzionano pero' non capisco perche' alcune istruzioni le salta!
questo e' il codice del server le righe con # sembrerebbe che non le esegui!
codice:#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdlib.h> #define Max 8000 int main () { char buff[Max]; struct sockaddr_in server; struct sockaddr_in client; int sd, temp_sd; int address_size; unsigned short port = 9000; if((sd= socket (AF_INET ,SOCK_STREAM,0 ))<0){ printf("Errore creazione del server!\n"); return -1; }else{ #printf("Prima della struttura"); server.sin_family = AF_INET; server.sin_port = htons(port); server.sin_addr.s_addr= htons(INADDR_ANY); if (bind(sd, (struct sockaddr *)&server , sizeof(server))<0){ printf("Errore nella chiamata di bind"); } printf("sono prima del listen"); listen(sd, 20); while(1){ if((temp_sd= accept(sd, (struct sockaddr *)&client, &address_size))<0) printf("Errore nel accept"); #printf("Sono prima del recv"); recv(temp_sd , buff , sizeof(buff),0); #printf("Dati ricevuti:%s" , buff ); strcpy(buff , "Dati dal server!"); send(temp_sd, buff, strlen(buff), 0); close(temp_sd); } } return 0; }
Invece il client riceve i dati e gli stampa a video! comunque questo e' il codice
Non capisco il perche' non esegue i printf nel server!!codice:#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdlib.h> #define Max 8000 int main () { char buff[Max]; struct sockaddr_in client; int sd; struct hostent *hp; unsigned short port = 9000; hp = gethostbyname("127.0.0.1"); //hp = gethostbyname("192.168.2.3"); bzero(&client , sizeof(client)); client.sin_family = AF_INET; client.sin_port = htons(port); client.sin_addr.s_addr= htons(INADDR_ANY); if((sd= socket (AF_INET ,SOCK_STREAM,0 ))<0){ printf("Errore creazione del server!\n"); return -1; }else printf("Socket creato\n"); printf("Sono prima di connect"); if (connect(sd, (struct sockaddr *)&client , sizeof(client))<0) printf("Errore nella chiamata di connessione"); send(sd, "Dati inviati dal client", strlen("Dati inviati dal client")+1, 0); recv(sd , buff , sizeof(buff), 0); printf("Risposta del server:%s\n" , buff); close(sd); return 0; }
grazie mille per l'aiuto

Rispondi quotando