Bonjour,
Dans le cadre d'un projet, je dois develloper un programme de p2p. Pour les échanges clients/serveur et serveur/clients, j'utilise des sockets UDP. Il n'a aucun problème lors de ces échanges quand le programme client et le programme serveur tourne sur la même machine, mais dès que je passe par inetrnet ou par un réseau local, les échanges n'aboutissent pas. Je pense donc que celà vient de l'intialisation des structures sockaddr_in du client et du serveur mais je ne vois pas où est l'erreur :
code du client :
Code :
- /*creation de la socket*/
- if( (sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) err("Socket : " );
- /* initialisation de la structure serveur */
- addr_size = sizeof( struct sockaddr );
- addr_srv.sin_family = AF_INET;
- addr_srv.sin_port = htons(port);
- addr_srv.sin_addr.s_addr = inet_addr(argv[1]);
- memset( addr_srv.sin_zero, '\0', 8);
|
(l'adresse IP du serveur est passée en argument au lancemant du programme client)
code du serveur :
Code :
- /*creation de la socket*/
- if ( (sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1 ) {err("Socket : " );}
- /*gestion de la socket avec les adresses du client*/
- addr_srv.sin_family = AF_INET;
- addr_srv.sin_port = htons(atoi(port));
- addr_srv.sin_addr.s_addr = INADDR_ANY;
- memset( addr_srv.sin_zero, '\0', 8);
- addr_size = sizeof( struct sockaddr );
- /*on met la socket en écoute*/
- if ( bind(sock, (struct sockaddr *)&addr_srv, sizeof(struct sockaddr)) == -1) {err("Bind : " );}
|
j'ai aussi essayé de passer une adresse spécifique au serveur avec :
Code :
- addr_srv.sin_addr.s_addr = inet_addr("192.168.0.1" );
|
mais cela ne fonctionne toujours pas ...
Rq : je suis sous Linux Mandrake 10.1
Aidez moi svp