大家好,我是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,然后立即开始工作!
非常感谢所有建议和代码示例!!
非常感谢, 乔恩
答案 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()随时取消后台工作程序。 希望这会有所帮助。