最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)UDP通信方式

 更新時(shí)間:2025年01月07日 16:47:12   作者:一介學(xué)徒  
文章介紹了如何使用C#實(shí)現(xiàn)UDP通信,包括UDP服務(wù)器和客戶(hù)端的實(shí)現(xiàn)步驟和示例代碼,服務(wù)器關(guān)鍵類(lèi)為UdpClient和IPEndPoint,實(shí)例化對(duì)象后可以通過(guò)異步任務(wù)發(fā)送數(shù)據(jù)并接收數(shù)據(jù),客戶(hù)端同樣使用UdpClient和IPEndPoint,連接到遠(yuǎn)程服務(wù)器后開(kāi)新任務(wù)接收數(shù)據(jù)

C#實(shí)現(xiàn)UDP通信

一、UDP服務(wù)器

  • 1、關(guān)鍵類(lèi): UdpClient、IPEndPoint;
  • 2、實(shí)例化一個(gè)UdpClient對(duì)象;
  • 3、使用IPEndPoint建立與遠(yuǎn)程對(duì)象的連接;
  • 4、開(kāi)一個(gè)異步新任務(wù)發(fā)送數(shù)據(jù);
  • 5、主進(jìn)程接收數(shù)據(jù);

示例代碼:

        public static void Main()
        {
            UdpClient client = new UdpClient(8889);
            CancellationTokenSource cts = new CancellationTokenSource();
            IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0);
            Task.Factory.StartNew(() =>
            {
                while (!cts.IsCancellationRequested)
                {
                    string? sendMessage = Console.ReadLine();
                    if (sendMessage != null)
                    {
                        byte[] data = Encoding.Default.GetBytes(sendMessage);
                        client.Send(data, remotePoint);
                    }
                }
            }, cts.Token);
            while (true)
            {
                byte[] recvdata = client.Receive(ref remotePoint);
                if (recvdata != null)
                {
                    string recvMessage = Encoding.UTF8.GetString(recvdata);
                    if (recvMessage == "quit")
                    {
                        cts.Cancel();
                        client.Close();
                        return;
                    }
                    StringBuilder sb = new StringBuilder("客戶(hù)端:");
                    sb.Append(recvMessage);
                    Console.WriteLine(sb);
                }
            }
        }

二、UDP客戶(hù)端

  • 1、關(guān)鍵類(lèi): UdpClient、IPEndPoint;
  • 2、實(shí)例化一個(gè)UdpClient對(duì)象;
  • 3、使用IPEndPoint建立與遠(yuǎn)程服務(wù)器的連接;
  • 4、開(kāi)新任務(wù)接收數(shù)據(jù);
  • 5、主進(jìn)程發(fā)送數(shù)據(jù);

示例代碼:

        public static void Main()
        {
            UdpClient client = new UdpClient(8888);
            IPAddress remoteIp = IPAddress.Parse("127.0.0.1");
            int remotePort = 8889;
            IPEndPoint? remoteEndPoint = new IPEndPoint(remoteIp, remotePort);
            CancellationTokenSource cts = new CancellationTokenSource();

            Task.Factory.StartNew(() =>
            {
                while (!cts.IsCancellationRequested)
                {
                    try
                    {
                        byte[] data = client.Receive(ref remoteEndPoint);
                        if (data != null)
                        {
                            StringBuilder sb = new StringBuilder("服務(wù)器:");
                            sb.Append(Encoding.UTF8.GetString(data));
                            Console.WriteLine(sb);
                        }
                    }
                    catch (Exception ex) 
                    {
                        Console.WriteLine(ex.ToString());
                        break ;
                    }
                }
            }, cts.Token);

            while (true)
            {
                string? sendMessage = Console.ReadLine();
                if (sendMessage != null)
                {
                    byte[] data = Encoding.Default.GetBytes(sendMessage);
                    client.Send(data, remoteEndPoint);
                    if (sendMessage == "quit")
                    {
                        cts.Cancel();
                        client.Close();
                        return;
                    }
                }
            }
        }

三、最終效果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用 C# 下載文件的多種方法小結(jié)

    使用 C# 下載文件的多種方法小結(jié)

    本文從最簡(jiǎn)單的下載方式開(kāi)始步步遞進(jìn),講述了文件下載過(guò)程中的常見(jiàn)問(wèn)題并給出了解決方案。并展示了如何使用多線(xiàn)程提升 HTTP 的下載速度以及調(diào)用 aria2 實(shí)現(xiàn)非 HTTP 協(xié)議的文件下載,對(duì)C# 下載文件相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-08-08
  • c# 解決IIS寫(xiě)Excel的權(quán)限問(wèn)題

    c# 解決IIS寫(xiě)Excel的權(quán)限問(wèn)題

    使用以上方法必須對(duì)dcom進(jìn)行配置,給用戶(hù)使用office的權(quán)限
    2012-10-10
  • C#程序優(yōu)化-有效減少CPU占用率

    C#程序優(yōu)化-有效減少CPU占用率

    本文給大家介紹的是C#程序優(yōu)化的小技巧,通過(guò)此方法可以有效的降低CPU的占用率,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • c#讀取圖像保存到數(shù)據(jù)庫(kù)中(數(shù)據(jù)庫(kù)保存圖片)

    c#讀取圖像保存到數(shù)據(jù)庫(kù)中(數(shù)據(jù)庫(kù)保存圖片)

    這篇文章主要介紹了使用c#讀取圖像保存到數(shù)據(jù)庫(kù)中的方法,大家參考使用吧
    2014-01-01
  • 深入理解StringBuilder的使用方法

    深入理解StringBuilder的使用方法

    下面小編就為大家?guī)?lái)一篇深入理解StringBuilder的使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • Unity常用命令模式詳解

    Unity常用命令模式詳解

    這篇文章主要為大家詳細(xì)介紹了Unity常用命令模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C#中using指令的幾種用法

    C#中using指令的幾種用法

    本文介紹的是C#中using指令的幾種用法,希望對(duì)你有幫助,一起來(lái)看吧!
    2015-10-10
  • C# 操作 MongoDB的示例demo

    C# 操作 MongoDB的示例demo

    這篇文章主要介紹了C# 操作 MongoDB的示例demo,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-12-12
  • 如何使用C#讀寫(xiě)鎖ReaderWriterLockSlim

    如何使用C#讀寫(xiě)鎖ReaderWriterLockSlim

    這篇文章向大家介紹了讀寫(xiě)鎖ReaderWriterLockSlim,其優(yōu)點(diǎn)就是多個(gè)線(xiàn)程可以同時(shí)讀取該對(duì)象,要了解更多讀寫(xiě)鎖的知識(shí),仔細(xì)閱讀下文吧
    2015-07-07
  • Js中的substring,substr與C#中的Substring比較

    Js中的substring,substr與C#中的Substring比較

    本篇文章主要是對(duì)Js中的substring,substr與C#中的Substring進(jìn)行了比較。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01

最新評(píng)論

平谷区| 石柱| 临洮县| 武定县| 福贡县| 台山市| 保定市| 林芝县| 廊坊市| 威海市| 嘉定区| 贺州市| 张北县| 武夷山市| 固安县| 铁岭市| 桦川县| 江山市| 石棉县| 历史| 湘潭县| 得荣县| 梁平县| 班玛县| 凤台县| 钟山县| 新宁县| 辽阳市| 前郭尔| 祥云县| 唐河县| 双峰县| 罗山县| 星子县| 桃园县| 英德市| 雅江县| 涿州市| 那坡县| 故城县| 封开县|