• C# UDP发送和接收


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace UDPTest
    {
        /// <summary>
        /// 接受
        /// </summary>
        public class LabelReceiveService
        {
            /// <summary>
            /// 用于UDP发送的网络服务类
            /// </summary>
            static UdpClient udpcRecv = null;
    
            static IPEndPoint localIpep = null;
    
            /// <summary>
            /// 开关:在监听UDP报文阶段为true,否则为false
            /// </summary>
            static bool IsUdpcRecvStart = false;
            /// <summary>
            /// 线程:不断监听UDP报文
            /// </summary>
            static Thread thrRecv;
    
            public static void StartReceive()
            {
                if (!IsUdpcRecvStart) // 未监听的情况,开始监听
                {
                    localIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8899); // 本机IP和监听端口号
                    udpcRecv = new UdpClient(localIpep);
                    thrRecv = new Thread(ReceiveMessage);
                    thrRecv.Start();
                    IsUdpcRecvStart = true;
                    Console.WriteLine("UDP监听器已成功启动");
                }
            }
    
            public static void StopReceive()
            {
                if (IsUdpcRecvStart)
                {
                    thrRecv.Abort(); // 必须先关闭这个线程,否则会异常
                    udpcRecv.Close();
                    IsUdpcRecvStart = false;
                    Console.WriteLine("UDP监听器已成功关闭");
                }
            }
    
            /// <summary>
            /// 接收数据
            /// </summary>
            /// <param name="obj"></param>
            private static void ReceiveMessage(object obj)
            {
                while (IsUdpcRecvStart)
                {
                    try
                    {
                        byte[] bytRecv = udpcRecv.Receive(ref localIpep);
                        string message = Encoding.UTF8.GetString(bytRecv, 0, bytRecv.Length);
                        Console.WriteLine(string.Format("{0}[{1}]", localIpep, message));
    
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        break;
                    }
                }
            }
    
        }
    }
        public static void Main(string[] args)
            {
                LabelReceiveService.StartReceive();
                Console.ReadKey();
            }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace UDPSendTest
    {
        class Program
        {
            /// <summary>
            /// 用于UDP发送的网络服务类
            /// </summary>
            private static UdpClient udpcSend = null;
    
            static IPEndPoint localIpep = null;
    
            public static void Main(string[] args)
            {
                localIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888); // 本机IP和监听端口号
                udpcSend = new UdpClient(localIpep);
    
     
                // 实名发送
                string msg = null;
                while ((msg = Console.ReadLine()) != null)
                {
                    Thread thrSend = new Thread(SendMessage);
                    thrSend.Start(msg);
                }
                Console.ReadKey();
            }
    
            /// <summary>
            /// 发送信息
            /// </summary>
            /// <param name="obj"></param>
            private static void SendMessage(object obj)
            {
                try
                {
                    string message = (string)obj;
                    byte[] sendbytes = Encoding.Unicode.GetBytes(message);
                    IPEndPoint remoteIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8899); // 发送到的IP地址和端口号
                    udpcSend.Send(sendbytes, sendbytes.Length, remoteIpep);
                    //udpcSend.Close();
                }
                catch { }
            }
             
        }
    }
  • 相关阅读:
    【http】HTTP请求方法 之 OPTIONS
    【javascript基础】函数前面的一元操作符
    【javascript基础】运算符优先级
    【移动互联网开发】Zepto 使用中的一些注意点 【转】
    【jQuery】IE9 jQuery 1.9.1 报 Syntax error,unrecognized expression 错误
    一月收集几个有用的谷歌Chrome插件
    【Sizzle学习】之关于【初探 jQuery 的 Sizzle 选择器】这篇文章里的小bug
    【第三方类库】underscore.js源码---each forEach 每次迭代跟{}比较的疑惑
    vue-cli脚手架npm相关文件解读(2)webpack.prod.conf.js
    vue-cli脚手架npm相关文件解读(1)webpack.base.conf.js
  • 原文地址:https://www.cnblogs.com/chxl800/p/12072751.html
Copyright © 2020-2023  润新知