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

C# Discussion :

Problemme ports Apache-Socket


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut Problemme ports Apache-Socket
    J'ai une adrrese IP Dynamique donc je me suis servi de DynDNS pour resoudre se problemme. Avec une application serveur que j'ai fait moi-meme, je veux ecouter le port 80 de cette addresse donnee par DynDNS. Aussi, j;ai installe Apache2 sur mon ordinateur. Le problemme est que je recois le message "une seule utilisation de chaque addresse de socket..... est habituellement autorisee". Si je ferme apache2, je recois le message "L'addresse demandee n'est pas valide dans son contexte. Comment dois-je proceder ?

    J;ai modifie dans httpd.conf le port , je l'ai mis "Listen 8080", mais ca ne marche toujours pas. En plus, si j'ecris Dns.GetHostEntry ("http://monaddresse.com:8080/"); dans mon code C#, je recois le message "Hote inconnu".

    Je veux que les deux, mon serveur C# et apache marchent.

    Des idees ?

    merci

  2. #2
    Membre éprouvé Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Par défaut
    salut dex_tritus,

    une seule utilisation de chaque addresse de socket
    Pas sur de comprendre ce que tu veux faire exactement mais
    cette erreur signifie que tu tente de crée un socket sur un port déja utilisé.
    (tu ne peux pas crée un socket sur le port 80 si Apache est à l'écoute sur ce port)

    L'addresse demandee n'est pas valide dans son contexte
    Donc là tu peux crée ton socket (vu que apache est plus là) mais il doit y avoit une erreur dans la syntaxe de ton adresse.

    Remplace"http://www.moadresse.com" par "monadresse.com"

  3. #3
    Membre éclairé Avatar de TrEiZe85
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Par défaut
    8080 n'est pas un port securisé (SSH ?) par hasard ? je me trompe peu etre !
    Le SSH est il actif dans ton serveur apache ???

    A mon avis ton post aurai été mieu dans la section "ApAcHe" enfin une chose dans ce genre

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IPAddress[] ipdns = Dns.GetHostAddresses("monadresse.org");
                    IPAddress ip = IPAddress.Parse(ipdns[0].ToString());
                    IPEndPoint ipLocal = new IPEndPoint(ip,8221);
                    m_socListener.Bind(ipLocal);
    Voici mon code.
    "monadresse.org" est une adresse de DynDNS, je l'utilise au cause de mon IP dynamique.

    Je recois le message : L'addresse demandee n'est pas valide dans son contexte.

    Quel est le problemme ?

    Je vous remercie beaucoup.

  5. #5
    Membre éprouvé Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Par défaut
    Tu ne peux pas faire un bind sur une adresse distante. Utilise ton IP locale.

    un bon article : http://stephaneey.developpez.com/tut...otnet/sockets/

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    Bon, mais voila ce que je veux faire.
    "monadresse.org" est une adresse donnee par DynDNS, redirection vers mon ordinateur qui a une adresse IP dynamique.

    J'ai developpe deux application, un client et un serveur. Je vais donner le client a un ami, et moi je serrai le serveur. Pour qu'il se connecte a mon ordinateur, quel code je dois ecrire?

    Pour le serveur, et pour le client?

    Pour le serveur il faut faire du bind a mon ip local avec DNS.GetHostName() ? Et listen sur quel port ?

    Pour le client, il faut qu'il se connecte au meme port que j;ai ouvert? et a quelle adresse ? (en tenant compte que j;ai une adresse ip dynamique, il faut qu'il utilise l'adresse fournie par "monadresse.org", n'est-ce pas ?

    Merci et votre aide me servira beaucoup.

  7. #7
    Membre éprouvé Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Par défaut
    Tu "bind" ton serveur sur ton adresse locale. N'importe quel port non-utilisé fera l'affaire. Pour le client, tu le connecte à ton adresse dns sur le port que tu as choisi.

    google est ton ami : http://www.codeguru.com/csharp/cshar...cle.php/c7695/

  8. #8
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    Merci beaucoup, j'ai lu le tutoriel, mais ca ne marche toujours pas, je recois une erreur, je vous montre mon code de mon client et de mon seveur :

    Serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    try
                {
     
                    m_socListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     
                    //IPAddress[] ipdns = Dns.GetHostAddresses("localhost");
                    IPAddress ip = IPAddress.Parse("192.168.1.111");
                    //textBox1.Text = ipdns[0].ToString();
                    //IPHostEntry ipHostEntry = Dns.GetHostEntry(Dns.GetHostName());
                    //IPAddress ip = ipHostEntry.AddressList[0];
                    IPEndPoint ipLocal = new IPEndPoint(ip,8221);
                    m_socListener.Bind(ipLocal);
                    m_socListener.Listen(1);
                    m_socListener.BeginAccept(new AsyncCallback(OnClientConnect), null);
     
                    }
                catch (SocketException se)
                {
                    MessageBox.Show(se.Message);
                }
     
     public void OnClientConnect(IAsyncResult asyn)
            {
                try
                {
                    m_socWorker=m_socListener.EndAccept(asyn);
     
                }
                catch (ObjectDisposedException)
                {
                    System.Diagnostics.Debugger.Log(0, "1", "\n OnClientConnection: Socket has been closed\n");
                }
                catch (SocketException se)
                {
                    MessageBox.Show(se.Message);
                }
    Client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    try
                {
     
                    m_socClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IPAddress[] ipadr = Dns.GetHostAddresses("monadressse.homelinux.org");
                    IPAddress ip = IPAddress.Parse(ipadr[0].ToString());
                    IPEndPoint ipEnd = new IPEndPoint(ip, 8221);
                    m_socClient.BeginConnect(ipEnd, new AsyncCallback(OnConnect), null);
                //    WaitForData();
     
                }
                catch (SocketException se)
                {
                    MessageBox.Show(se.Message);                
     
                }
         public void OnConnect (IAsyncResult asrez) {
                m_socClient.EndConnect(asrez);
     
        }
    Voila. Le listen marche sans erreur, mais quand j'essaie de connecter le client il y a l'erreur suivante : "Une requete d'envoi ou de reception de donnees n'a pas ete autorisee car le socket n'est pas connecte et (...) aucune adresse n'a ete fournie."

    Je ne vois pas ou est le problemme, mais peut etre au "BeginConnect" ou au "bind" ou les deux...

    Merci beaucoup

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/11/2010, 01h03
  2. [EasyPHP] Port Apache occupé
    Par jad777 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/01/2008, 20h06
  3. installation apache [socket d ecoute]
    Par discogarden dans le forum Apache
    Réponses: 2
    Dernier message: 10/08/2005, 17h40

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