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 :

communication à travers les sockets


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut communication à travers les sockets
    J'essaie de faire communiquer deux pc, mais la transmission de données ne se fait pas.. j'ai un socket dans le client a part le tcpclient, je pense que c'est le probleme, mais je ne suis pas sure... je crois que le problème réside dans

    /*
    client.Connect("192.168.1.32", 104);
    tcpclnt.Connect("192.168.1.32", 104); // use the ipaddress as in the server program
    */

    voici un extrait du code
    Client
    TcpClient tcpclnt = new TcpClient();
    Stream stm;
    Byte[] sbuff = new Byte[1024];
    public Socket client ;

    textBox3.AppendText("Connecting.....");
    client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    client.Connect("192.168.1.32", 104);
    tcpclnt.Connect("192.168.1.32", 104); // use the ipaddress as in the server program

    textBox3.AppendText("\r\nConnected");

    client.Send(sbuff, 0, sbuff.Length, SocketFlags.None);

    stm = tcpclnt.GetStream();

    textBox3.AppendText("\r\nTransmitting.....");
    AAssociateRQ ass_rq = new AAssociateRQ();
    byte[] bt = new byte[298];
    bt=ass_rq.Init_PDU_RQ(); // méthode qui récupére un tableau de bytes de la classe AAssociateRQ
    stm.Write(bt, 0, bt.Length);

    Byte[] b = new Byte[298];
    byte[] bb = new byte[298];
    int k = stm.Read(bb, 0, 298);
    byte[] PDUacrcv = new byte[298];

    for (int i = 0; i < k; i++)
    {
    PDUacrcv[i] = b[i];
    textBox3.AppendText(Convert.ToChar(bb[i]).ToString());
    }

    Serveur

    IPAddress ipAd = IPAddress.Parse("192.168.1.32"); //use local m/c IP address, and use the same in the client
    TcpListener myList = new TcpListener(ipAd, 104);
    myList.Start();

    textBox1.AppendText("The server is running at port 104...");
    textBox1.AppendText("\r\nThe local End point is :" + myList.LocalEndpoint);
    s = myList.AcceptSocket();
    textBox1.AppendText("\r\nConnection accepted from " + s.RemoteEndPoint);

    Byte[] b = new Byte[298];
    int k = s.Receive(b);
    byte[] b2 = new byte[2];
    textBox1.AppendText("\r\nReceived...");
    byte[] PDUrcv = new byte[298];


    for (int i = 0; i < k; i++)
    {
    PDUrcv[i] = b[i];
    textBox1.AppendText(Convert.ToChar(b[i]).ToString());
    }
    if (PDUrcv[0].Equals(0x01))
    textBox1.AppendText("\r\nAAssociate RQ received");
    else
    textBox1.AppendText(PDUrcv[0].ToString());
    Byte[] request = new Byte[4];

    byte[] abs=new byte[1];
    int rabs = s.Receive(abs);
    ASCIIEncoding asen = new ASCIIEncoding();
    //au cas au il a accépter la communication
    if (PDUrcv[145].Equals(0x09))
    {
    s.Send(asen.GetBytes("\r\nPresentation Context accepted"));
    }

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    sachant que ça marche avec l"adresse 127.0.0.1

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    euh en théorie, le serveur n'a pas à connaitre l'adresse IP ou il est installé...

    Pour moi, quand on fait du TCP/IP, le serveur se met en écoute sur un port de la machine et n'a pas besoin d'une adresse IP

    PAr contre, il est logique que le client, lui, dispose d'une adresse IP où effectuer sa connexion ainsi qu'un port sur lequel le serveur dédié est connecté

    Voila

    Hope it helps !

    The Monz, Toulouse

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sachant que ça marche avec l"adresse 127.0.0.1
    C'est un problème classique rencontré en .net/C# (mais pas en C++ ou en Delphi par exemple): si le client C# est sur la même machine que le serveur, on doit utiliser 127.0.0.1 au lieu de l'adresse IP réélle qui ne marche pas (si le client est sur un autre PC, il ne devrait pas y avoir de problème avec l'addresse réélle, sauf firewall).

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    Je pense que le problème est plutot lié a la façon d'envoi de données,

    socket.Send( ...)

    ou stream.Write( ... )

    J'ai essayé d'utiliser seulement stream.Write pour le client et le serveur, mais ça n'a pas toujours marché,

    Quelle est la différence????
    sachant que j'ai besoin d'envoyer des données, et un fichier sous forme de flux d'octets

Discussions similaires

  1. Réponses: 17
    Dernier message: 04/09/2010, 19h57
  2. Réponses: 1
    Dernier message: 01/05/2010, 11h32
  3. communication avec les sockets
    Par yacin87 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/04/2010, 07h50
  4. communication entre les socket
    Par zougagh dans le forum Développement
    Réponses: 4
    Dernier message: 24/01/2009, 14h33
  5. communication client serveur avec les sockets
    Par timtima dans le forum Linux
    Réponses: 2
    Dernier message: 07/11/2007, 10h23

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