C# UDP 通讯 简单例子

时间:2018-12-18 19:34 作者:Mr.Pan 阅读数:707


 

1、UdpClient的实例化时需要依靠一个IpEndPoint对象,这个IpEndPoint对象在UdpClient收发数据时,起到关键的作用。

2、targetPoint表示,发送的数据要去往的地址。因为我在本机测试,所以targetPoint与udpPoint的两个IPAddress是一样的,它们之间是没有关系的。

发送端代码:

        static void Main(string[] args)
        {
            IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4505);
            UdpClient udpClient = new UdpClient(udpPoint);
            //UdpClient udpClient = new UdpClient();
            string sendMsg = "Hello UDP Server.";
            byte[] sendData = Encoding.Default.GetBytes(sendMsg);
            IPEndPoint targetPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5500);
            udpClient.Send(sendData, sendData.Length, targetPoint);
            Console.WriteLine("Send Message:{0}",sendMsg);
            Console.Read();
        }



接收端代码:

        static void Main(string[] args)
        {
            IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5500);
            UdpClient udpClient = new UdpClient(udpPoint);
            //IPEndPoint senderPoint = new IPEndPoint(IPAddress.Parse("14.55.36.2"), 0);
            IPEndPoint senderPoint = new IPEndPoint(IPAddress.Any, 0);
            byte[] recvData = udpClient.Receive(ref senderPoint);
            Console.WriteLine("Receive Message:{0}",Encoding.Default.GetString(recvData));
            Console.Read();
        }


1、接收端同样初始化一个UdpClient对象,并指定其收发数据的IPEndPoint。

2、senderPint是一个IPEndPoint对象,用来存放,所接收到数据的发送者的IPEndPoint。在下面的方法udpClient.Receive中会用到。这里曾经困扰我很长时间,一直不知道这个对象在这时声明做什么用,IPAddress.Any起到了什么作用。我的理解是,它只是为下面的Receive方法提前准备了一个对象,这个对象当前的地址和端口都不重要,重要的是,Receive方法可以使用它来存放一些东西。

3、udpClient.Receive方法,一直等待有数据传过来,当有数据传来时,返回数据,并将携带数据的IPEndPoint对象放入引用参数senderPoint中。这里我想到了一点,c#中的对象本身就是引用类型的(除了基本类型,struct等),为何还要加ref呢?似乎这里是为了明确地强调,这个要传入的参数是会被改动的。



推荐文章

[推荐] C# 设置Excel数据自适应行高、列宽的2种情况 (转)

[推荐] C# 图片处理帮助类(压缩,裁剪,缩略图)

[推荐] C# 通过AForge.dll 调用摄像头设备

[推荐] C#创建Word并填充内容

[推荐] C# UDP 通讯 简单例子

[推荐] 8天玩转并行开发——第七天 简要分析任务与线程池

[推荐] 8天玩转并行开发——第六天 异步编程模型

[推荐] 8天玩转并行开发——第四天 同步机制(上)

[推荐] 8天玩转并行开发——第一天 Parallel的使用

[推荐] c# 个人总结

[推荐] 8天玩转并行开发——第五天 同步机制(下)

[推荐] 将DataRow[]转换成DataTable的两种写法

[推荐] 8天玩转并行开发——第三天 plinq的使用

[推荐] Bitmap与byte[] 互转

[推荐] 关于.net登录前端加密传输


评论列表



注册用户登录后才能发表评论,请登录注册,访问 博客首页