C# UDP接收数据 多线程

news/2024/5/18 12:35:59 标签: c#, udp, 开发语言

UDP接收数据

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Switcher
{
    class UDPReceive
    {

        /// <summary>  
        /// 服务器端  
        /// </summary>  
        /// <param name="port"></param>  
        public void Server(int port)
        {
            try
            {
                UdpClient udpclient = new UdpClient(port);
                while (true)
                {
                    IPEndPoint ipendpoint = null;
                    byte[] bytes = udpclient.Receive(ref ipendpoint); //停在这等待数据  
                    string data = Encoding.Default.GetString(bytes, 0, bytes.Length);

                    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
                }
                udpclient.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
            }
            Console.ReadKey();
        }


    }
}

UDP 使用线程接收数据

using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading;

namespace Switcher
{
    class UDPThread
    {
        UdpClient udpClient;
        Thread UdpThread;
    

  
        public void StartServer(int port)
        {
            if (udpClient != null)
            {
                UdpThread.Abort();
                Thread.Sleep(TimeSpan.FromMilliseconds(500d));
                udpClient.Close();
            }
            try
            {
                udpClient = new UdpClient(port);
                UdpThread = new Thread(new ThreadStart(UdpReciveThread));
                UdpThread.Start();
                //buttonStartServer.Enabled = false;
            }
            catch (Exception y)
            {
                Console.WriteLine("1::{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
            }
        }
        void UdpReciveThread()
        {
            while (udpClient != null && Thread.CurrentThread.ThreadState == ThreadState.Running)
            {
                try
                {

                    IPEndPoint ipendpoint = null;
                    byte[] bytes = udpClient.Receive(ref ipendpoint); //停在这等待数据  
                    string data = Encoding.Default.GetString(bytes, 0, bytes.Length);

                    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);

                }
                catch (Exception y)
                {
                    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
                }
            }
         
        }

      

     
    }
}


http://www.niftyadmin.cn/n/5219507.html

相关文章

山西电力市场日前价格预测【2023-11-28】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-28&#xff09;山西电力市场全天平均日前电价为283.92元/MWh。其中&#xff0c;最高日前电价为437.70元/MWh&#xff0c;预计出现在17:45。最低日前电价为0.00元/MWh&#xff0c;预计出…

MySQL死锁,死锁产生的4个必要条件,死锁案例, 如何避免死锁

文章目录 MySQL死锁了怎么办&#xff08;死锁的产生及解决方案&#xff09;&#xff1f;1、 死锁与产生死锁的四个必要条件1.1 什么是死锁1.2 死锁产生的4个必要条件 2、死锁案例2.1 表锁死锁2.2 行锁死锁2.3 共享锁转换为排他锁 3、死锁排查4、 如何避免死锁5、死锁的排查6、 …

代码随想录二刷 | 哈希表 |四数相加II

代码随想录二刷 &#xff5c; 哈希表 &#xff5c;四数相加II 题目描述解题思路 & 代码实现 题目描述 454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0…

聊聊如何进行代码混淆加固

​ 聊聊如何进行代码混淆 前言什么是代码混淆代码混淆&#xff0c;是指将计算机程序的代码&#xff0c;转换成一种功能上等价&#xff0c;但是难于阅读和理解的形式的行为。 代码混淆常见手段1、名称混淆 将有意义的类&#xff0c;字段、方法名称更改为无意义的字符串。生成…

【深度学习】gan网络原理实现猫狗分类

【深度学习】gan网络原理实现猫狗分类 GAN的基本思想源自博弈论你的二人零和博弈&#xff0c;由一个生成器和一个判别器构成&#xff0c;通过对抗学习的方式训练&#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…

easyExcel 注解开发 快速以及简单上手 以及包含工具类

easyExcel 简单快速使用 1. mevan 这里版本我这里选的是 poi 4.1.2和 ali的easyexcel 的 3.3.1。 因为阿里easy是根据poi的依赖开发的有关系&#xff0c;两者需要对应要不然就会有很多bug和错误在运行时发生。需要版本对应&#xff0c;然而就是easy的代码也会有bug这个版本是比…

1071 Speech Patterns (巧用字符流逃课)

&#xff08;阅读理解题&#xff0c;刷了这么多pat&#xff0c;感觉代码水平没升多少&#xff0c;英语水平倒是有了些许提升&#xff0c;回头考个六级试试水平呵呵呵。&#xff09; 思路&#xff1a;题目本身没什么好说的&#xff0c;一个哈希表记录单词&#xff0c;然后关键就…

Spring不再支持Java8了

在今天新建模块的时候发现了没有java8的选项了&#xff0c;结果一查发现在11月24日&#xff0c;Spring不再支持8了&#xff0c;这可怎么办呢&#xff1f;我们可以设置来源为阿里云https://start.aliyun.com/ 。 java8没了 设置URL为阿里云的地址