[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