等待数据的Udp侦听器

本文关键字:侦听器 Udp 数据 等待 | 更新日期: 2023-09-27 18:10:57

我知道这对一些人来说可能是一个基本的问题,所以请友好一点。

下面解释了我的问题。在我的计算机上,我有visual studio 2010,其中一个c#程序正在运行,我有一个udp侦听器等待udp端口上的udp数据(让我们说端口:85)。

UdpClient listener = null;
try
{
    listener = new UdpClient((int)nudPort.Value);
    if (listener.Available > 0)
    { ......
    }
}

有谁能告诉我一种方法(任何程序),我可以发送udp数据在这个端口上,使我的c#程序可以检测它使用同一台计算机。

等待数据的Udp侦听器

你试过Netcat吗

nc -u your_server_name_here 85 <其中85是您的监听端口>

查看Wikipedia.org关于如何使用它。有一个关于如何在客户端和服务器之间发送UDP包的示例

下面的代码会给你一个想法

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form4 : Form
    {
        private Thread _listenThread;
        private UdpClient _listener;
        public Form4()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            this._listenThread = new Thread(new ThreadStart(this.StartListening));
            this._listenThread.Start();
        }
        private void StartListening()
        { 
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 35555);
            IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
            this._listener = new UdpClient(localEndPoint);
            try
            {
                do
                {
                    byte[] received = this._listener.Receive(ref remoteIpEndPoint);
                    MessageBox.Show(Encoding.ASCII.GetString(received));
                }
                while (this._listener.Available == 0);
            }
            catch (Exception ex)
            {
                //handle Exception
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 35556);
            IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 35555);
            UdpClient caller = new UdpClient(localEndPoint);
            caller.Send(Encoding.ASCII.GetBytes("Hello World!"), 12, remoteIpEndPoint);
            caller.Close();
        }
        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            base.OnFormClosing(e);
            this._listener.Close();
            this._listenThread.Abort();
            this._listenThread.Join();
            this._listenThread = null;
        }    
    }
}