2017-09-30 4 views
-1

Bonjour à tous Je suis très nouveau pour Visual Studio, la programmation C# et Windows Form Applications.Comment faire Simple C# Windows Form Application UDP Socket Testeur

Mon besoin est très simple - Je veux créer mon propre petit programme pour écouter les données envoyées par un périphérique GPS sur UDP. Je n'ai pas besoin de communiquer, il suffit d'écouter et de voir les données sur l'écran!

Quelque chose qui fonctionne exactement comme ceci:

http://sockettest.sourceforge.net/ (voir l'onglet « UDP »)

Mon appareil GPS a une adresse IP de 192.168.1.1 et envoie une piqûre de nombres toutes les 1 seconde, de façon continue , transmettant sur UDP 25.255.255.255:5017. Tous les exemples sur Internet semblent se concentrer sur la communication bidirectionnelle, les fenêtres de chat client et serveur, etc. Il y a beaucoup de termes confus comme synchrone et a-synchrone, client, serveur, UDP, TCP, etc.

Je veux juste un programme encore plus simplifié que l'exemple ci-dessus, où je peux saisir le numéro de port 5017, cliquez sur Démarrer l'écoute, puis tout de suite fonctionne!

Tous les conseils et les exemples de code ont été très bien reçus !!

Un grand merci, Jon

+0

Cela pourrait vous aider: https://stackoverflow.com/questions/746519/udpclient-receive-on-broadcast-address – DogeAmazed

+0

Voir les échantillons msdn. Les exemples utilisent le socket mais vous pouvez les remplacer par n'importe quelle classe héritant des sockets tcpclient, tcplistener, udpclient, udplistener: https://docs.microsoft.com/fr-fr/dotnet/framework/network-programming/socket-code-examples – jdweng

Répondre

0

j'ai maintenant travailler, et peut recevoir des données dans une zone de texte dans l'interface utilisateur! J'utilise button_start_Click pour ouvrir le port et commencer à recevoir. Cependant, je n'arrive pas à faire fonctionner button_stop_Click. Comment pouvez-vous arrêter/fermer/déconnecter/terminer Recevoir en cliquant sur le bouton?

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button_start_Click(object sender, EventArgs e) 
    { 
     Client = new UdpClient(Convert.ToInt32(textBox_port.Text)); 
     Client.BeginReceive(DataReceived, null); 
    } 

    private void DataReceived(IAsyncResult ar) 
    { 
     IPEndPoint ip = new IPEndPoint(IPAddress.Any, Convert.ToInt32(textBox_port.Text)); 
     byte[] data; 
     try 
     { 
      data = Client.EndReceive(ar, ref ip); 

      if (data.Length == 0) 
       return; // No more to receive 
      Client.BeginReceive(DataReceived, null); 
     } 
     catch (ObjectDisposedException) 
     { 
      return; // Connection closed 
     } 

     // Send the data to the UI thread 
     this.BeginInvoke((Action<IPEndPoint, string>)DataReceivedUI, ip, Encoding.UTF8.GetString(data)); 
    } 

    private void DataReceivedUI(IPEndPoint endPoint, string data) 
    { 
     txtLog.AppendText("[" + endPoint.ToString() + "] " + data + Environment.NewLine); 
    } 


    private void button_stop_Click(IAsyncResult ar) // NOT WORKING!! AGH! 
    { 
     IPEndPoint ip = new IPEndPoint(IPAddress.Any, Convert.ToInt32(textBox_port.Text)); 
     byte[] data; 
     data = Client.EndReceive(ar, ref ip); 
     Client.Close(); 

    } 
+0

Le format de Stack Overflow n'est pas le même que celui d'un forum où vous continuez à publier des messages. Je pense que vous feriez mieux d'inclure ce code dans votre question à titre d'exemple, puis de supprimer la réponse. – YetAnotherRandomUser