【问题标题】:udp listener waiting for dataudp监听器等待数据
【发布时间】:2013-04-26 12:26:22
【问题描述】:

我知道这对某些人来说可能是一个基本问题,所以请善待。

以下解释了我的问题。在我的电脑上,我有 Visual Studio 2010,其中运行一个 c# 程序,我有一个 udp 侦听器在 udp 端口​​(假设端口:85)上等待 udp 数据。

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

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

【问题讨论】:

  • 使用另一个 C# 程序?
  • 嗯,我猜你是对的。会试一试

标签: c# udp


【解决方案1】:

你试过Netcat

nc -u your_server_name_here 85

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

【讨论】:

    【解决方案2】:

    下面的代码会给你一个思路

    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;
            }    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多