begin process at 2012 05 29 17:39:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Réseau & Internet

 > 

Problème d'IP Client avec les winsock


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'IP Client avec les winsock

lundi 26 février 2007 à 23:41:19 | Problème d'IP Client avec les winsock

Cphil51

Boujour a tous.

Je m'interesse en ce moment aux socket sous windows et j'ai un petit probleme actuellement. J'aimerais savoir comment récupérer l'IP d'un client qui se connecte au serveur. En tenant compte que je ne veux pas l'IP d'un hypothétique ROUTEUR (sinon je ne poserais pas de question). Voici le code :

#include <stdio.h>
#include <winsock.h>
#pragma comment(lib, "ws2_32.lib")

char buffer[32]; // pas top... juste pour les tests.

int main()
{
  WSADATA WSAData;
  WSAStartup(MAKEWORD(2,0), &WSAData);
  SOCKET sock;
  SOCKET csock;
  SOCKADDR_IN sin;
  SOCKADDR_IN csin;
  sock = socket(AF_INET, SOCK_STREAM, 0);
  sin.sin_addr.s_addr      = INADDR_ANY;
  sin.sin_family                = AF_INET;
  sin.sin_port                  = htons(1234);
  bind(sock, (SOCKADDR *)&sin, sizeof(sin));
  listen(sock, 0);
  while(1)
  {
    int sinsize = sizeof(csin);
    if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
    {
      sprintf(buffer, "IP = %s\r\n", inet_ntoa(csin.sin_addr)); // on récupère l'adresse du client
      send(csock, buffer, strlen(buffer), 0);
      printf("Client connecté : %s", buffer);
      shutdown(csock, 2);
    }
  }
  return 0;
}

Lorsque je tente des accès depuis l'exterieur par mon IP publique, le serveur m'indique l'IP de mon routeur (ma freebox en fait, soit 192.168.0.254). Les tests de connection sont fais en utilisant telnet fournit avec windows. Je voudrais que le serveur m'indique ma vraie IP, celle que m'attribue mon hebergeur.

@+
mardi 27 février 2007 à 08:38:15 | Re : Problème d'IP Client avec les winsock

yoyo269

Membre Club
Salut !

As-tu essayé une de mes sources qui te permet de récupérer ton IP internet ?
Si non, voilà l'url :
http://www.cppfrance.com/code.aspx?ID=29467

Tiens-moi au courant.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

mardi 27 février 2007 à 08:48:59 | Re : Problème d'IP Client avec les winsock

vecchio56

Administrateur CodeS-SourceS
Moi je comprends pas le problème, l'IP locale n'est pas présente sur le réseau
Qu'entends-tu par 'accès depuis l'exterieur'. Sur quelle machine s'exécute ton programme et depuis quelle machine te connectes-tu?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 27 février 2007 à 10:56:58 | Re : Problème d'IP Client avec les winsock

Cphil51

Tout d'abord merci pour vos réponses.
J'appelle "accès depuis l'exterieur" une connection depuis internet (et non depuis mon réseau local).

Sinon yoyo269, j'ai deja regardé ta source qui se base sur une requete HTTP vers une fichier PHP. Mais j'aimerais résoudre ce problème directement depuis le code du serveur sans appeller de scripts distants... Et la il y a un hic =>  Il me sort l'ip du routeur (192.168.0.1) au lieu de mon IP internet, celle du client (82.236.***.***)

Dans ton travail en fait, il me faudrait savoir comment dans son mécanisme interne, PHP récupère l'IP du client (mais en plus simple )

J'éspère avoire été assez clair cette fois .

mardi 27 février 2007 à 11:14:58 | Re : Problème d'IP Client avec les winsock

yoyo269

Membre Club
Et bien Cphil51, php n'a rien avoir là-dedans.
Ce qui permet d'avoir ton IP internet, c'est le fait que le serveur soit extérieur à ton installation.
Et là c'est très simple. Autrement avec un routeur et en local, je te souhaite bien du courage.
Ma solution est on ne plus simple je pense et très rapide.
Si tu veux je te file le code php pour que tu fasses toi-même ta page php, aucun souci.
En tous cas, si tu trouves une autre méthode, poste ta source sur cppfrance, ça intéressera bcp de monde à mon avis.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

mardi 27 février 2007 à 12:47:41 | Re : Problème d'IP Client avec les winsock

vecchio56

Administrateur CodeS-SourceS
Tu veux récupérer l'IP du client non? Et tu récupères l'IP du serveur?
Normalement il n'y a aucun problème pour connaitre l'IP du client, tu aura toujours l'IP publique, parce que c'est la seule qui est routable.

Je m'y connais pas en socket, mais tu es sur que csin.sin_addr est l'adresse du client?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 27 février 2007 à 12:59:45 | Re : Problème d'IP Client avec les winsock

Cphil51

oui csin.sin_addr contient (normalement) l'IP du client mais il doit y avoir un probleme au niveau du protocole. Il doit y avoire un magnière de traverser le routeur sans problème je pense. Je vais faire des recherches... mais ca fais deja un aprèm. que je planche la dessus :(
mardi 27 février 2007 à 13:02:50 | Re : Problème d'IP Client avec les winsock

vecchio56

Administrateur CodeS-SourceS
T'es sur que 192.168.0.254 est pas l'adresse locale du serveur?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 27 février 2007 à 13:06:06 | Re : Problème d'IP Client avec les winsock

yoyo269

Membre Club
Oui c'est bien ça vecchio, on récupère l'adresse IP de la personne qui vient de se connecter (être acceptée), donc celle du client.
Bon courage Cphil51, à mon avis t'es pas sorti de l'auberge !!! lol

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

mardi 27 février 2007 à 13:14:37 | Re : Problème d'IP Client avec les winsock

vecchio56

Administrateur CodeS-SourceS
J'ai essayé. En me connectant de chez moi: 192.168.0.254
De l'extérieur: la bonne adresse.

Si tu me donnes ton IP, on peut faire un test

_____________________________________
Un éditeur de ressources gratuit pour Windows


1 2

Cette discussion est classée dans : client, ip, socket, sin, sock


Répondre à ce message

Sujets en rapport avec ce message

Probleme de Client Serveur [ par Krox68 ] voila jaimerais faire un programme client qui puisse se connecter a ce serveur : #include void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WS Client serveur [ par fanch314 ] Je que le serveur et le client échange par internet.Le serveur ne voit pas de client connectéEt le buffer du client contient nimporte quoi.En gros ils les socket [ par ben83510 ] Bonjour, Je me suis lancer dans le tutoriel sur les socket. J arrive a effectuer la connexion lorsque j execute le serveur et le client sur mon pc.Ma Problèmes avec les Socket [ par baptchr55 ] Bonjour à tous, Je suis ennuyé avec la création de socket. J'aimerais pouvoir envoyer des données (dans un premier temps que j'écris) une par une se Pb chaine de caractères [ par baptchr55 ] Bonjour à tous encore une fois j'ai besoin de votre aide. J'essaye d'envoyer par le biais d'un socket une chaine de caractères. Ce qui fonctionne, se Chaine de caractères Via Socket [ par baptchr55 ] Bonjour à tous encore une fois j'ai besoin de votre aide. J'essaye d'envoyer par le biais d'un socket une chaine de caractères. Ce qui fonctionne, se erreur bind: Address already in use [ par andoid ] Bonjour j'ai mon programme suivant qui marche et je suis en route pour creer mon serveur pour l'instant le client qui se connecte je lui envoi juste l communication serveur c et client java [ par andoid ] Bonjour Je voulais savoir commment on peut faire communiquer un serveur C et un cleint java avec les sockets voici juste un petit serveur qui dit bonj probleme boucles mutliple avec les sockets [ par miki42 ] Bonjour a tous voila j'ai pa le choix,deja une semaine que je mord la langue pour trouver dou vient mon probleme mais rien y fait suit obliger de fari erreur serveur multitheard en c [ par dyroj ] salut,j'ai créer un serveur echo en multithread et il marche a moitier sofe que par foi il confon les client.enfin c'est un peut bizare, par exemple q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales