如何制作简单的C#Windows窗体应用程序UDP套接字测试程序

时间:2017-09-30 05:41:01

标签: c# .net sockets udp udpclient

大家好,我是Visual Studio,C#编程和Windows窗体应用程序的新手。

我的需求非常简单 - 我想创建自己的小程序来收听由GPS设备通过UDP发送的数据。我不需要沟通,只需听取并看到屏幕上的数据!

与此完全相同的东西:

http://sockettest.sourceforge.net/(参见“UDP”标签)

我的GPS设备的IP为192.168.1.1,每隔1秒发送一次数字,连续发送,在UDP 25.255.255.255:5017上传输。

互联网上的所有示例似乎都集中在双向通信,客户端和服务器聊天窗口等。有很多令人困惑的术语,如同步和同步,客户端,服务器,UDP,TCP,绑定。

我只想要一个比上面例子更简化的程序,在那里我可以输入端口号5017,点击Start Listening,然后立即开始工作!

非常感谢所有建议和代码示例!!

非常感谢, 乔恩

2 个答案:

答案 0 :(得分:0)

我现在有了它,并且可以在UI的文本框中接收数据!

我使用button_start_Click打开端口并开始接收。但是,我无法让button_stop_Click工作。如何使用按钮单击停止/关闭/断开/结束接收?

    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();

    }

答案 1 :(得分:0)

在后台工作程序中运行相同的代码,然后您可以使用backgroundworker.cancelasync()随时取消后台工作程序。 希望这会有所帮助。