C#中使用UDP通信的示例

当我们需要实现网络通信时,UDP是一个非常好的选择。因为UDP协议比TCP协议要简单,无连接,无需建立连接就可以发送数据包,适用于快速传输数据,对于实时通信的情况比如在线游戏,流媒体等领域的网络通信非常方便。而C#也提供了丰富的UDP相关库和示例,简化了UDP通信的开发难度。

以下是使用C#实现UDP通信的完整攻略:

1. 创建UDP服务器

首先我们需要创建一个UDP服务器。使用C#来创建UDP服务器比较简单。我们只需要使用UDPClient类和IPAddress类创建一个UdpClient对象和绑定IP端口号即可,如下所示:

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

class Program
{
    static void Main(string[] args)
    {
        var server = new UdpClient(new IPEndPoint(IPAddress.Any, 12345));
        Console.WriteLine("服务器已启动,等待接收数据...");
        while (true)
        {
            var receivedResults = server.Receive(ref remoteEP);
            var message = System.Text.Encoding.UTF8.GetString(receivedResults);
            Console.WriteLine("收到消息:{0},来自:{1}", message, remoteEP.ToString());
        }
    }
}

以上代码创建了一个UdpClient对象,并且使用了IPAddress.Any来监听任何可用的本地IP地址(如果你指定了对象,就只监听指定的地址)。同时,我们用IPEndPoint指定了监听的端口号为12345。我们使用while(true)死循环来监听端口并等待客户端发送数据。

2. 创建UDP客户端

创建UDP客户端同样很容易。我们只需要使用UdpClient类和IPEndPoint类创建一个UdpClient对象即可,如下所示:

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

class Program
{
    static void Main(string[] args)
    {
        var client = new UdpClient();
        var serverEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);

        Console.WriteLine("请输入要发送的消息");
        while (true)
        {
            var str = Console.ReadLine();
            var data = System.Text.Encoding.UTF8.GetBytes(str);
            client.Send(data, data.Length, serverEP);
        }
    }
}

以上代码创建了一个UdpClient对象,同时指定了要发送数据的远端IP地址和端口号。我们使用while(true)死循环来等待用户输入,然后将输入的数据通过UdpClient对象发送给指定的IP地址和端口号。

3. 示例说明

我们使用两台电脑来测试上面的示例。一台电脑作为UDP服务器,另一台作为UDP客户端. 假设服务器的IP地址为192.168.1.100,我们使用客户端发送信息到服务器,服务器将会输出收到的消息并显示消息来源地址和端口号。

服务器端启动后等待客户端连接,客户端发送数据给服务端,则服务器的控制台输出如下:

服务器已启动,等待接收数据...
收到消息:Hello World!,来自:192.168.1.102:52734

我们在客户端输入Hello World!并回车,客户端就会发送一个数据包给服务器,并在控制台显示发送成功。服务器会收到这个消息并在控制台显示发出地址和端口号,重新等待下一个消息的到来,等待另一个客户端连接,直到您绑定到服务器的IP终结点上的所有客户端都终止活动。

请输入要发送的消息
Hello World!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中使用UDP通信的示例 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • Java泛型类型通配符和C#对比分析

    Java泛型类型通配符和C#泛型中的通配符有些许不同之处。本文将深入讨论这些不同点,并带来一些示例来加深读者的理解。 1. Java泛型类型通配符 Java泛型类型通配符表示某个范围内的类型参数,但具体是哪个类型参数是未知的。泛型类型通配符用?表示,它可以用来定义泛型方法、泛型类和泛型接口,让代码在编译期间进行类型检查,减少运行时的错误。 1.1 无限制通配…

    C# 2023年6月7日
    00
  • Unity3D应用之时钟与钟表小组件的使用教程

    Unity3D应用之时钟与钟表小组件的使用教程 概述 本教程主要介绍如何在Unity3D中创建时钟和钟表小组件,以及如何在游戏或其他应用程序中使用它们。时钟和钟表小组件是非常常见的UI元素,可以提高游戏或其他应用程序的可用性和用户体验。 准备工作 在开始创建时钟和钟表小组件之前,需要准备好Unity3D开发环境。如果您还没有安装Unity3D,可以在Unit…

    C# 2023年6月3日
    00
  • .NET Core 离线生成 Tron 波场私钥和地址笔记

    NuGet 引入依赖库 PM> Install-Package Tron.Wallet.Net 随机生成私钥和对应的地址 using Tron.Wallet.Net; namespace ConsoleApp1 { internal class Program { static async Task Main(string[] args) { var …

    C# 2023年4月18日
    00
  • c#获取数组中最大数的值

    获取数组中最大数的值可以通过以下几个步骤实现: 1.定义并初始化一个数组,例如:arr = new int[] { 1, 5, 3, 2, 4 };。 2.设置一个变量max,用来记录最大值。可以用数组中第一个元素初始化,例如:int max = arr[0];。 3.遍历数组,比较每个元素与max的大小,如果元素大于max,则更新max,例如: for (…

    C# 2023年6月7日
    00
  • C#中的位操作小结

    让我来给您详细讲解“C#中的位操作小结”的完整攻略。 一、概述 C#中的位操作是指可以直接打开和操纵整数的各个位的操作,它是一种非常高效和灵活的算法。在C#中,位操作可以方便地完成各种数据的处理和转换,如颜色值、文件属性、位图、掩码等等。 二、位操作运算符 C#中常用的位操作运算符有以下几种: & 按位与:将两个操作数对应的位进行与操作,结果为1的位…

    C# 2023年6月7日
    00
  • 使用C#创建Windows服务的实例代码

    下面我将为你分享如何使用C#创建Windows服务的攻略,步骤包含两条示例说明。 一、创建Windows服务 1.打开Visual Studio,在菜单中选择“文件”→“新建”→“项目”→“Windows服务”。 2.设置服务名称和解决方案名称等信息,点击“创建”按钮。 3.在“Solution Explorer”中找到“Service1.cs”文件,并双击…

    C# 2023年6月3日
    00
  • .net中的Span类和Memory类介绍

    .NET中的Span类和Memory类介绍 在.NET中,Span类和Memory类是用于处理内存的重要类型。本攻略将介绍这两个类的基本概念、用法和示例。 Span类 Span类是一个结构体,用于表示一段连续的内存区域。它可以用于读取和写入内存,而无需进行复制或分配。Span类的定义如下: public ref struct Span<T> { …

    C# 2023年5月17日
    00
  • C#实现简单的飞行棋游戏

    我们来简要讲解如何实现一个简单的飞行棋游戏。 1. 游戏规则分析 在开始实现游戏前,我们需要先对飞行棋的规则进行分析: 游戏玩家为2~4人。 每个玩家都有4个棋子,初始位置位于起点。 按照顺时针方向轮流掷骰子,掷到6的可以将棋子从起点移动到起点以外的地方;其它点数则表示棋子可以向前移动相应的步数。 某个棋子走到了别人的棋子位置,就可以将别人的棋子送回起点,自…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部