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 :

Envoyer des informations en "cleartext" ou ASCII en mode client/socket [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut Envoyer des informations en "cleartext" ou ASCII en mode client/socket
    Bonjour à tous,

    Je suis un jeune en C# et je travail avec VS2017.

    Mon probleme est simple:

    Main droite: C'est un serveur qui attend de ma part que je me connecte en mode client et que je lui envoi des infos en mode cleartext/ascii.

    Main gauche, c'est moi! Je dois, dans mon application en C#, me connecter sur le socket 127.0.0.1:8888. Jusque là c'est OK.

    Je dois envoyer au serveur des données venant d'un label.text.
    Il faut que ces données soit en text clair.

    Et c'est la mon probleme. Je ne sais pas faire.

    Voici les codes que j'ai mis en place:
    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
    using System;
    using System.Windows.Forms;
    using System.Net.Sockets;
    using System.Text; 
     
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                msg("Client Started");
                clientSocket.Connect("127.0.0.1", 5010);
                label1.Text = "Client Socket Program - Server Connected ...";
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
     
    // qu'est ce que je sois mettre?????
     
            }
        }
    }
    Que me conseillez vous?

    Merci pour votre attention et votre aide.
    Fred

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Tu peux regarder sur la MSDN, la classe System.Net.Sockets.TcpClient dispose d'une méthode GetStream qui renvoie l'objet de flux NetworkStream permettant de recevoir et d'envoyer des données. Il y a des exemples qui sont proposés dans les pages concernées.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    avec un truc dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var bytes = system.text.encoding.asciiencoding.ascii.getbytes("le texte ici");
    clientSocket.GetStream().Send(bytes, 0, bytes.count)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut
    NOXEN: Merci pour tes liens
    POL63: merci aussi pour sa suggestion.

    J'ai essayé les solutions que vous m'avez suggéré, mais je n'ai rien sur mon serveur, hors mis l'identifiant de connexion au socket.

    Pour une meilleur compréhension je peux vous proposer de vous envoyer un zip de l'application du socket.

    voici les derniers codes que j'ai testé. Mais pas mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                IPHostEntry iphostInfo = Dns.GetHostEntry(Dns.GetHostName());
                IPAddress ipAdress = IPAddress.Parse("127.0.0.1"); //(iphostInfo.AddressList[0];
                IPEndPoint ipEndpoint = new IPEndPoint(ipAdress, 5010);
                Socket clientSocket = new Socket(ipAdress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                clientSocket.Connect("127.0.0.1", 5010);
     
                clientSocket.Send(Encoding.UTF8.GetBytes(input));
     
                clientSocket.Close();// "127.0.0.1", 5010);
    Quelle autre idée auriez vous?
    Merci

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    on ne peut pas vraiment t'aider en l'état

    tu nous dit que tu dois envoyer de l'ascci par tcp ip, on te donne le code pour le faire s'il y a un problème (non précisé) il est peut etre ailleurs ou dans ta compréhension de ce que tu dois faire

    le serveur n'attend pas un caractère de fin de trame ?
    pourquoi envoyer en utf8 alors que tu nous parlais d'ascii ?
    pourquoi le port a changé entre les 2 codes ?
    pourquoi utiliser la classe socket qui est plus compliquée que la classe tcpclient ?
    qui a écrit le code serveur ? a t il précisé le protocole de dialogue ?
    ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Par défaut
    Bonsoir Pol63,

    Merci pour ta patience a essayer de m'aider. Je vais prendre le plus de soin possible à préciser la situation.

    > tu nous dit que tu dois envoyer de l'ascci par tcp ip, on te donne le code pour le faire s'il y a un problème (non précisé) il est peut etre ailleurs ou dans ta compréhension de ce que tu dois faire
    - effectivement, le probleme est peut être ailleurs et je ne sais pas trop quel est le bon et le mauvais bout du probleme.

    > le serveur n'attend pas un caractère de fin de trame ? Il n'y a pas de caractère de trame spécifiquement attendu.
    Le client "normal" envoi sa trame que j'arrive à "capter". La trame est ainsi:

    Trame reçue : {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}}<\r><\n>{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\b\f0\fs17 MATIZ-PC : \b0 $msg de test $\par<\r><\n>}<\r><\n>

    la portion qui m'intéresse et que je souhaite envoyer avec mon projet C# est comprise en milieu de trame et entre les $

    > pourquoi envoyer en utf8 alors que tu nous parlais d'ascii ?
    A défaut de m'en sortir je test un peu tout. Mais dans la trame ci dessus, c'est bien du ASCII

    > pourquoi le port a changé entre les 2 codes ?
    J'ai changé le port ayant un doute sur le fait que mon soucis puisse etre lié à un probleme de port, mais il me semble que le port n'y est pour rien.

    > pourquoi utiliser la classe socket qui est plus compliquée que la classe tcpclient ?
    Là, tu touche du doigt mon manque de savoir sur le sujet.
    Il s'avère que l'application serveur que j'utilise (disponible sous WinDev) est avec un socket.
    Il se peut que tu me dise que je suis dans l'erreur, et ça me ferait plaisir de pouvoir apprendre et comprendre sur ce sujet.

    > qui a écrit le code serveur ?
    Le code est celui disponible en tuto par PCSOFT/WINDEV.

    > a t il précisé le protocole de dialogue ?
    N'etant pas expert dans le domaine, je ne sais pas repondre, et les codes sont (a mon gout et pour ma comprehension) mal renseigné.
    Si tu sais coder en WinDev je peux t'envoyer les sources.

    Encore merci pour ton aide.

    A te lire.
    Fred

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

Discussions similaires

  1. [VB 2005]Envoyer des informations
    Par Bacchantes dans le forum VB.NET
    Réponses: 1
    Dernier message: 01/05/2008, 20h09
  2. Envoyer des informations au systeme
    Par hugo1992 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/12/2007, 13h36
  3. [PHP-JS] envoyer des informations à deux pages
    Par insane_80 dans le forum Langage
    Réponses: 2
    Dernier message: 04/10/2006, 14h50
  4. Envoyer des informations à un service Web en javascript
    Par gingman dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/03/2006, 10h46
  5. Réponses: 3
    Dernier message: 28/10/2005, 10h01

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