Volevo chiedere aiuto su un errore che ho quando provo a lanciare un semplice server e client su Linux. Spero di non aver sbagliato sezione, altrimenti correggo subito.
I codici utilizzati sono:
server.c
client.ccodice:#include <stdio.h>#include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <time.h> int main(int argc, char **argv) { int ncon=0,listenfd, connfd; struct sockaddr_in servaddr; char buff[4096]; time_t ticks; if ( ( listenfd = socket(AF_INET, SOCK_STREAM, 0) ) < 0 ) { perror("socket"); exit(1); } servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(1024); if ( bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) { perror("bind"); exit(1); } if ( listen(listenfd, 1024) < 0 ) { perror("listen"); exit(1); } for ( ; ; ) { if ( ( connfd = accept(listenfd, (struct sockaddr *) NULL, NULL) ) < 0 ) { perror("accept"); exit(1); } ticks = time(NULL); snprintf(buff, sizeof(buff), "Sei il client numero %d , %.24s\r\n", ncon,ctime(&ticks)); if ( write(connfd, buff, strlen(buff)) != strlen(buff)) { perror("write"); exit(1); } close(connfd); ncon++; } }
Quando lancio il server tramite linea di comando parte, ma quando lancio anche il client va in loop e si ferma al Connect Error...Non credo che sia un errore di codice siccome dal pc di un altro mio amico funziona tutto correttamente con i file identici.codice:#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int main(int argc, char **argv) { int sockfd, n; char recvline[1025] ; struct sockaddr_in servaddr; if (argc != 2) { fprintf(stderr,"usage: %s <IPaddress>\n",argv[0]); exit (1); } if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { fprintf(stderr,"socket error\n"); exit (1); } servaddr.sin_family = AF_INET; servaddr.sin_port = htons(1024); if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) < 0) { fprintf(stderr,"inet_pton error for %s\n", argv[1]); exit (1); } if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) { fprintf(stderr,"connect error\n"); exit(1); } while ( (n = read(sockfd, recvline, 1024)) > 0) { recvline[n] = 0; if (fputs(recvline, stdout) == EOF) { fprintf(stderr,"fputs error\n"); exit(1); } } if (n < 0) { fprintf(stderr,"read error\n"); exit(1); } exit(0); }
Qualcuno sa darmi qualche dritta per risolvere? Ringrazio anticipatamente per l'aiuto.

Rispondi quotando