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

API standards et tierces Android Discussion :

Connexion TCP à un serveur développé en C#


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut Connexion TCP à un serveur développé en C#
    Bonjour tout le monde !!

    Je suis en train de développer une application de type client/serveur utilisant le protocole TCP. Mon serveur est développé en c#, et le client, en java.

    Malheureusement, tout ce ne passe pas comme prévu : mon appli ne veut/peut se connecter au serveur.

    Code client (java) :

    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
     
    Socket s = null;
     
    try
    {
    System.out.println("Connecting ...");
     
    s = new Socket(name_server, 35555);
    System.out.println("Connected");
     
    }
    catch (Exception ex)
    {
    	System.out.println("Erreur connexion : " + ex.getCause() + " // " + ex.getMessage());
    }
    Info :
    - name_server stocke le nom NetBios du serveur
    - le catch me renvoie :

    Erreur connexion : null // null
    ---------------------------------------------------

    Code serveur (c#)

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    // display the server's name
    MessageBox.Show("Server Name : " + Environment.MachineName.ToString());
     
                    // Set the TcpListener on port 35555.
                    Int32 port = 35555;
                    IPAddress localAddr = IPAddress.Any;
     
                    // TcpListener server = new TcpListener(port);
                    server = new TcpListener(localAddr, port);
     
                    // Start listening for client requests.
                    server.Start();
     
                    // Buffer for reading data
                    Byte[] bytes = new Byte[256];
                    String data = null;
     
                    // Enter the listening loop.
                    while (true)
                    {
                        Console.Write("Waiting for a connection... ");
     
                        // Perform a blocking call to accept requests.
                        // You could also user server.AcceptSocket() here.
                        TcpClient client = server.AcceptTcpClient();
                        Console.WriteLine("Connected!");
     
                        data = null;
     
                        // Get a stream object for reading and writing
                        NetworkStream stream = client.GetStream();
     
                        int i;
     
                        // Loop to receive all the data sent by the client.
                        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            // Translate data bytes to a ASCII string.
                            data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                            Console.WriteLine("Received: {0}", data);
     
                            // Process the data sent by the client.
                            data = data.ToUpper();
     
                            byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
     
                            // Send back a response.
                            stream.Write(msg, 0, msg.Length);
                            Console.WriteLine("Sent: {0}", data);
                        }
     
                        // Shutdown and end connection
                        client.Close();
                    }
    Quelqu'un aurait une idée du pourquoi du comment ?

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    affichez l'exception complète avec ex.printStackTrace();, sans ça, impossible de diagnostiquer. Accessoirement, c'est une très mauvaise idée de capter toutes les exceptions, captez uniquement celles que vous savez traiter, laissez remonter les autres.

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut
    Je viens de rajouter dans mon catch

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ex.printStackTrace();
    et j'obtiens ceci :


    et je dois bien avouer que je ne comprends pas grand chose à ce qui est écrit

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ben pourtant c'est clair, il se plaint que tu fait une opération réseau dans le thread principal. Cf la doc de l'exception:

    NetworkOnMainThreadException


    The exception that is thrown when an application attempts to perform a networking operation on its main thread.

    This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged. See the document Designing for Responsiveness.

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut
    Donc, si je comprends bien, je dois créer un thread, dans lequel je met la connection au serveur ?

    Bon ba, je sais ce qu'il me reste à faire. Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion TCP Asynchrone : client C#, Serveur C++
    Par Velvounet dans le forum Développement
    Réponses: 3
    Dernier message: 08/01/2010, 11h45
  2. Connexion TCP entre 2 serveurs
    Par mayu5 dans le forum Réseau
    Réponses: 9
    Dernier message: 23/04/2008, 17h12
  3. Deux connexions TCP entre un serveur et un client ?
    Par innosang dans le forum Développement
    Réponses: 4
    Dernier message: 18/12/2006, 00h33
  4. Réponses: 1
    Dernier message: 17/11/2006, 23h21
  5. Paramétrer le nombre de connexion sur mon serveur Mysql
    Par Zerga dans le forum Installation
    Réponses: 2
    Dernier message: 12/12/2003, 19h21

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