[Pluto-tech] (no subject)
diaroby
diaroby@tin.it
Fri, 25 May 2001 19:52:07 +0200
PROBLEMA: errore nel BINDING del socket
non riesco a implementare uno stupidissimo server!
o meglio, quando eseguo il programma, la bind restituisce 0.
come faccio a creare un socket con l'indirizzo IP che mi da l'ISP al momento e la porta che voglio io?
aiuto!!!
il codice è:
//server.c
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define MAX_BUFF 200
#define Errore(x) { puts(x); exit(-1); }
int main() {
int sock_server, server_size,client_size,in,err;
char buffer[MAX_BUFF];
char address[]="213.45.217.181";
struct sockaddr_in server_name, client_name;
struct in_addr addr; //contenuto in sockadd_in
server_name.sin_family= AF_INET; //famiglia
server_name.sin_port=0; //porta locale
in=inet_aton(address, (struct in_addr *)&addr); //converte la stringa
//in net byte order
server_name.sin_addr= addr;
server_size= sizeof(server_name);
client_size= sizeof(client_name);
sock_server= socket(AF_INET,SOCK_DGRAM,0);
if (sock_server<=0) Errore("err in creazione socket");
err= bind(sock_server,(struct sockaddr_in *)&server_name, sizeof(server_name));
if (err<=0) Errore("err in server binding"); //!!!!!!!!!!!!
//ricezione messaggio del client:
recvfrom(sock_server,buffer,MAX_BUFF,0,&client_name,&client_size);
printf("il messagio del client è: %s \n", buffer);
//spedizione messaggio al client:
sendto(sock_server,buffer,MAX_BUFF,0,&client_name,client_size);
} //fine SERVER