wpf udp一个界面的发送接收


using System;
using System.Net;
using System.Net.Sockets;
using System.Windows.Threading;



 public partial class MainWindow : Window//你自己创建wpf界面的名字

    {

UdpClient udpcSend;//初始化udp收发需要的函数,这个udpcSend是一个全局变量

Thread thrRecv;//定义一个线程用于接收 是一个全局变量

public MainWindow()//你自己创建wpf界面的名字
        {
            InitializeComponent();

            send();

            receive();

        }

//发送的函数

public void send()

{

udpcSend = new UdpClient(本机的udp端口);

remoteIpep = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 161);//发送到的端口号以及IP地址

 udpcSend.Send(发送数据, 发送数据长度, remoteIpep );//发送

}

//用于监听接收的函数,在主函数中调用,写在发送函数的下面

public void receive()
        {
            if (!IsUdpcRecvStart) // 未监听的情况,开始监听
            {
                thrRecv = new Thread(ReceiveMessage);
                thrRecv.Start();
                IsUdpcRecvStart = true;
            }
            else                  // 正在监听的情况,终止监听
            {
                thrRecv.Abort(); // 必须先关闭这个线程,否则会异常
                IsUdpcRecvStart = false;
            }

        }

//接收函数

 public void ReceiveMessage(object obj)
        {//udpcSend = new UdpClient(本机的udp端口);
            IPEndPoint remoteIpepss = new IPEndPoint(IPAddress.Any, 本机的udp端口);//接收到本机地址与本udp端口,添加                                                                                                                                                //与上方new的本机udp端口
            while (true)
            {
                try
                {
                    string jieshouIP = remoteIpepss.ToString();
                    string[] jieshouIPArray = jieshouIP.Split(':');
                    if (jieshouIPArray[0] == "0.0.0.0")
                    {
                      Console.WriteLine("开始接收");//程序启动还没开始接收但是接收监听函数已经打开
                    }
                    else
                   {                      
                    Console.WriteLine(jieshouIPArray[0]);        //接收到信息的对面的ip地址
                   byte jieshoushuju[] = udpcSend.Receive(ref remoteIpepss);接收到的udp报文

                    }

                 }

                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    break;
                }
            }
        }
        

}

这样一个简单的收发就结束了,如果本代码缺少using引用请自己根据缺少的引用进行添加

阅读更多
个人分类: 适合新手 c#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭