当我们需要实现网络通信时,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技术站