IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Serveur de socket


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut Serveur de socket
    Bonjour à tous,
    J'ai un serveur de sockets qui ne fonctionne que lorsqu'il est contacté par un client hébergé sur le meme serveur. Si le client est lancé ailleurs, alors la connexion ne se fait pas.
    Normalement, le client doit être une application Java pour mobiles, donc le client ne tournera pas sur le même hôte que le serveur... Pour "simuler" ce client Java, j'ai réalisé un petit client de sockets en PHP que j'exécute sur différents hôtes (le même pc que le serveur, un autre pc du même réseau local ou un autre pc extérieur au réseau local). Et en fonction d'où est exécuté le client, la communication avec le serveur ne fonctionne pas toujours.
    Pour le client, j'ai un DNS qui fonctionne qui permet de résoudre la bonne IP dans tous les cas. Mais pour le serveur, j'ai remarqué que c'est en fonction de l'IP que je mets lorsque je bind que ça fonctionne plus ou moins...
    Par exemple, si je bind avec l'IP locale alors ça marchera dans certains cas, si je bind l'IP globale, ça marchera dans d'autres cas, etc. Mais je voudrais que ça marche dans tous les cas

    Ma question est donc :
    Comment faire pour que le serveur de sockets PHP accepte les connexions entrantes de n'importe où (réseau local ou extérieur) ?

    Merci d'avance !

  2. #2
    Membre émérite Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Par défaut
    je suis débutant en php et j'ai pas très bien compris ce que tu voulait,

    mais par contre ton problème semble venir du réseau, la je peut aidé,

    si j'ai bien tout compris ton DNS interne fonctionne, mais lorsque que tu utilise ton client depuis l'extérieur (WAN) il refuse de ce connecté,

    si oui alors ton problème viens de ton routeur wan (et éventuellement des routeur entre ton wan et ton serveur) qui redirige mal la connexion sur le réseau,

    regarde aussi si le nom de domaine de ton DNS externe (genre le nom de domaine de ta boite) redirige bien sur la bonne ip,

    PS : je suis probablement a coté de la plaque mais bon qui sait...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut
    Merci d'avoir répondu.
    En fait, je souhaite avoir un serveur exécuté dans le réseau de la boîte et un client qui serait exécuté ailleurs.
    Sauf que si le client est exécuté en dehors du réseau local alors ça ne fonctionne pas. Pourtant, même depuis l'extérieur le DNS pointe bien sur le bon site, donc la bonne IP qui est l'IP globale du serveur, atteignable depuis l'extérieur. Mais c'est lorsque mon client tente de se connecter au serveur de sockets que ça ne fonctionne pas, comme si le port utilisé n'était pas ouvert, ce qui devrait pourtant être le cas...

  4. #4
    Membre émérite Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Par défaut
    le port 80 est peut être ouvert et redirigé vers ton serveur, donc tu affiche bien le site web depuis l'extérieur,
    par contre, peut être que le port utilisé par ton application n'est pas ouvert, ou simplement mal redirigé,
    en fonction de ton architecture réseau et du matériel utilisé ca peut venir de plusieurs endroit,

    PS : je suis pas sur de pas t'envoyai sur une fausse piste, mais bon, ca ne coute rien de vérifier

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut
    Oui, c'est ce que je pense aussi.
    Mais pour la partie ouverture/redirection de ports, c'est l'administrateur réseau de la boîte qui s'en occupe et il dit que le port que je lui ai demandé d'ouvrir et rediriger est bien ouvert et redirigé...
    Bref, je sais pas trop quoi faire...

  6. #6
    Membre émérite Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Par défaut
    peut être qu'un scan pourrait écarté l'hypothèse du port ou au contraire un élément pour montré a l'admin qu'il c'est trompé..., par contre pour savoir si il est bien rediriger, il te faudrait un client a l'extérieur et un service qui te réponde sur ton serveur...

  7. #7
    Membre émérite Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Par défaut
    truc con, tu a regardé dans les logs de ton serveur si il recevait les demande de connexion?, si il les reçoit, c'est pas la route, sinon ca l'est

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut
    Lorsque je scanne, je ne voit pas le port comme ouvert mais l'admin a dit que c'était normal, c'est dû "à la sécurité mise en place sur l'infrastructure".
    Merci pour la piste des logs, je vais regarder où trouver les logs de connexion sur le réseau... demain car je ne suis pas sur le même fuseau horaire et c'est déjà la fin de journée pour moi

  9. #9
    Membre éprouvé

    Inscrit en
    Juin 2009
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 99
    Par défaut
    Bonjour

    Est ce que tu es sur un hébergement mutualisé ?
    il faut s'assurer que l'hébergeur te permet d'ouvrir un socket et d'avoir l'adresse concernée.

    On peut voir le code PHP ?

  10. #10
    Membre émérite Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Par défaut
    je pense qu'il est sur un serveur interne a l'entreprise, pas chez un hébergeur, enfin je crois

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut
    Oui en fait je suis sur le serveur de l'entreprise pour laquelle je travaille en stage...

    Pour le code, cette partie est très simple...
    Serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $port=5009;
    $address="xxx.xxx.xxx.xxx";//ip globale, locale ou dns, j'ai tout essayé et dans tous les cas ça ne fonctionne que si le client est en local...
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket\n");
    $bind = socket_bind($socket, $address, $port) or die("could not create socket");
    socket_listen($socket) or die("could not set up socket listener");
    $client=socket_accept($socket) or die("could not accept incoming connection");
    Et le client (normalement c'est une appli java pour téléphones mobiles mais j'ai fait un petit client en PHP pour voir où est le problème...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //$address="xxx.xxx.xxx.xxx" ;//ip globale, locale ou dns...
    $port=5009;
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die('Socket creation refused');
    socket_connect($socket,$address,$port) or die('Connection impossible');
    Encore merci à ceux qui tentent de m'aider

Discussions similaires

  1. comment passer un paramètre a un serveur de socket
    Par orobin dans le forum Silverlight
    Réponses: 4
    Dernier message: 16/09/2008, 22h06
  2. Intégrer un serveur de sockets dans JBoss
    Par DevTeam_ dans le forum Wildfly/JBoss
    Réponses: 15
    Dernier message: 24/01/2008, 10h54
  3. Serveur de Socket
    Par ggounouman dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 22/08/2007, 14h08
  4. Lancer un serveur de socket par SSH
    Par ouss dans le forum Linux
    Réponses: 5
    Dernier message: 15/06/2007, 12h29
  5. Arrêt d'un serveur (connexion socket)
    Par Goduak dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 25/02/2007, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo