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

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

  • 相关阅读:
    java 自定义线程池
    java 锁
    volatile相关内容
    消息驱动式微服务:Spring Cloud Stream & RabbitMQ
    JVM中的本机内存跟踪
    性能监控: SPF4J介绍
    Spring Batch 入门级示例教程
    使用 Spring Boot Actuator 构建 RESTful Web 应用
    回调“地狱”和反应模式
    Java动态规划
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/13026580.html
Copyright © 2011-2022 走看看