zoukankan      html  css  js  c++  java
  • UdpClient实现udp消息收发

    跟tcpclient类似。

    不同之处:1、udp没有稳定通道,所有内容需要用字节形式收发。2、udpclient的connect方法,仅指定默认的发送目的地,并没有连接动作。

    最简的代码如下:

    被连接端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Net;
    using System.Net.Sockets;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                UdpClient udp = new UdpClient(9000);
                string msg;
                IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Any, 0);
                do
                {
                    msg = Encoding.Unicode.GetString(udp.Receive(ref iPEndPoint));
                    Console.WriteLine($"{iPEndPoint}:{msg}");
                } while (msg.ToLower()!="exit");
                Console.ReadKey();
            }
        }
    }

    连接端:

    static void Main(string[] args)
            {
                //可以使用不同的构造方法指定本地ip端口。
                UdpClient udp = new UdpClient();
                string msg;
                byte[] b_msg;
                udp.Connect(IPAddress.Parse("127.0.0.1"), 9000);
                do
                {
                    msg = Console.ReadLine();
                    b_msg = Encoding.Unicode.GetBytes(msg);
                    udp.Send(b_msg, b_msg.Length);
                } while (msg.ToLower()!="exit");
                Console.ReadKey();
            }

    运行结果:

     可以以此为蓝本,仿照tcpclient的方式,完成双向通讯和聊天室程序。

    经实测,目标ip地址更换为广播地址

    IPAddress.Broadcast

    后,即可实现广播消息发送。

  • 相关阅读:
    Struts2配置文件讲解
    分布式与集群的区别
    ANDROID中FRAGMENT的两种创建方式
    一个让echarts中国地图包含省市轮廓的技巧
    图解Spark API
    对NP问题的一点感想
    laravel框架容器管理的一些要点
    RedisRepository分享和纠错
    javascript中对数据文本格式化的思考
    LazyMan深入解析和实现
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/13026580.html
Copyright © 2011-2022 走看看