white05
30-01-2010, 17:47
Ragazzi sono alle prime esperienze con la socket, ho creato semplicemente un client e un server che devono scriversi qualche frase e premetto che ho seguito alla lettera il codice e l'esempio della guida ma non funziona
il codice del server è
/* Creazione del Server */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#define PORT 4000
#define CONNMAX 10
int main(){
int sock,newsock;
struct sockaddr_in server;
char buffer[100];
/*creiamo la socket e memorizziamo in sock il descriptor*/
if((sock=socket(AF_INET,SOCK_STREAM,0))<0){
perror("socket");
exit(1);
} else {
printf("Socket creata\n");
}
/*assegniamo indirizzo e porta mediante bind*/
server.sin_family=AF_INET;
server.sin_addr.s_addr= INADDR_ANY;
server.sin_port = htons(PORT);
bind(sock,(struct sockaddr*) &server,sizeof(server));
/*la socket si pone in ascolto*/
if(listen(sock,CONNMAX)<0){
perror("listen");
exit(1);
} else {
printf("socket in ascolto\n");
}
/*la socket accetta la richiesta di connessione dal Client*/
if (newsock=accept(sock,NULL,NULL)<0){
perror("accept");
exit(1);
} else { printf("Server: connessione accettata\n");
}
write(newsock,"sono il server",sizeof("sono il server"));
return 0;
}
in pratica il socekt scrive la frase "sono il server" su se stesso e non sul client!!!!! :mbe:
Quando eseguo il client mi risulta la frase "Server: connessione accettata" quindi deduco che la connessione è avvenuta, e allora perché succede tutto ciò??
Spero possiate aiutarmi
il codice del server è
/* Creazione del Server */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#define PORT 4000
#define CONNMAX 10
int main(){
int sock,newsock;
struct sockaddr_in server;
char buffer[100];
/*creiamo la socket e memorizziamo in sock il descriptor*/
if((sock=socket(AF_INET,SOCK_STREAM,0))<0){
perror("socket");
exit(1);
} else {
printf("Socket creata\n");
}
/*assegniamo indirizzo e porta mediante bind*/
server.sin_family=AF_INET;
server.sin_addr.s_addr= INADDR_ANY;
server.sin_port = htons(PORT);
bind(sock,(struct sockaddr*) &server,sizeof(server));
/*la socket si pone in ascolto*/
if(listen(sock,CONNMAX)<0){
perror("listen");
exit(1);
} else {
printf("socket in ascolto\n");
}
/*la socket accetta la richiesta di connessione dal Client*/
if (newsock=accept(sock,NULL,NULL)<0){
perror("accept");
exit(1);
} else { printf("Server: connessione accettata\n");
}
write(newsock,"sono il server",sizeof("sono il server"));
return 0;
}
in pratica il socekt scrive la frase "sono il server" su se stesso e non sul client!!!!! :mbe:
Quando eseguo il client mi risulta la frase "Server: connessione accettata" quindi deduco che la connessione è avvenuta, e allora perché succede tutto ciò??
Spero possiate aiutarmi