UdpClient没有收到任何数据

时间:2018-12-24 10:33:43

标签: c# .net winforms udpclient

所以,这让我感到困惑了一段时间。我想不出一个更简单的程序来编写和测试。我初始化UdpClient并在单独的线程上调用Receive方法。以下是完整的代码:

UdpClient client = new UdpClient(1414);            
        byte[] data = new byte[320];
        IPEndPoint localpt = new IPEndPoint(IPAddress.Any,0);
        const string START_COMMAND = "START";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            client.Connect("192.168.1.12",33051);

            backgroundWorker1.RunWorkerAsync();

        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                while (client.Available > 0)
                {
                    data=client.Receive(ref localpt);
                }                    
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            byte[] START_BYTES = Encoding.ASCII.GetBytes(START_COMMAND);
            client.Send(START_BYTES, START_BYTES.Length);
        }

while (client.Available > 0)上设置断点后,我注意到client.Available始终为零。
我尝试过的事情:
1-检查我是否可以ping通远程主机(好的,我可以ping通)
2-检查网络接口上是否有可用数据(确定使用过的线缆,并看到传入的数据包)
3-检查我的应用程序是否被允许通过防火墙(确定明确添加了我的exe来通过Windows防火墙)
4-禁用(卸载)任何防火墙或防病毒程序(确定)
但是我无法从应用程序内部接收任何数据。通过进一步的调查,我发现可以发送数据(远程主机接收我的数据),但是我永远也收不到。

0 个答案:

没有答案