2017-09-30 6 views
-1

みなさんこんにちは皆私はVisual Studio、C#プログラミング、およびWindowsフォームアプリケーションを初めて使い慣れています。シンプルなC#WindowsフォームアプリケーションのUDPソケットテスターを作成する方法

私の必要性は非常に簡単です。自分の小さなプログラムを作成して、UDP経由でGPSデバイスが送信しているデータを聞きたいと思っています。私はコミュニケーションする必要はありません、ちょうど聞いて、画面上のデータを参照してください!

このとまったく同じ働き何か:連続

http://sockettest.sourceforge.net/を( 'UDP]タブを参照)

私のGPSデバイスは、1秒ごとに192.168.1.1のIPを持っており、数字の刺し傷を送信し、 UDP 25.255.255.255:5017で送信します。

インターネット上のすべての例は、双方向通信、クライアントとサーバーのチャットウィンドウなどに焦点を当てているようです。同期、同期、クライアント、サーバー、UDP、TCP、バインディングなどの混乱する用語がたくさんあります。

上記の例よりもさらに単純なプログラムが必要です。ここでは、ポート番号5017を入力し、「開始」をクリックしてすぐに動作します。

すべてのアドバイスとコード例が非常に感謝して受け入れられました!

多くのおかげで、 ジョン

+0

これはあなたを助けるかもしれない:https://stackoverflow.com/questions/746519/udpclient-receive-on-broadcast-address – DogeAmazed

+0

は、MSDNのサンプルを参照してください。サンプルはソケットを使用しますが、ソケットtcpclient、tcplistener、udpclient、udplistenerを継承するクラスで置き換えることができます:https://docs.microsoft.com/en-us/dotnet/framework/network-programming/socket-code-examples – jdweng

答えて

0

は、私は今、それが働いていて、UIでテキストボックス内のデータを受け取ることができます!

button_start_Clickを使用してポートを開き、受信を開始します。しかし、私はbutton_stop_Clickを動作させることができません。あなたはボタンをクリックしてどのように停止/終了/切断/ endReceiveできますか?

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

Stack Overflowのフォーマットは、投稿を続けているフォーラムと同じではありません。私は、このコードを例としてあなたの質問に巻き込んで、答えを取り除く方が良いと思う。 – YetAnotherRandomUser

関連する問題