C#实现UDP通信方式
作者:一介学徒
文章介绍了如何使用C#实现UDP通信,包括UDP服务器和客户端的实现步骤和示例代码,服务器关键类为UdpClient和IPEndPoint,实例化对象后可以通过异步任务发送数据并接收数据,客户端同样使用UdpClient和IPEndPoint,连接到远程服务器后开新任务接收数据
C#实现UDP通信
一、UDP服务器
- 1、关键类: UdpClient、IPEndPoint;
- 2、实例化一个UdpClient对象;
- 3、使用IPEndPoint建立与远程对象的连接;
- 4、开一个异步新任务发送数据;
- 5、主进程接收数据;
示例代码:
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("客户端:");
sb.Append(recvMessage);
Console.WriteLine(sb);
}
}
}二、UDP客户端
- 1、关键类: UdpClient、IPEndPoint;
- 2、实例化一个UdpClient对象;
- 3、使用IPEndPoint建立与远程服务器的连接;
- 4、开新任务接收数据;
- 5、主进程发送数据;
示例代码:
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("服务器:");
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;
}
}
}
}三、最终效果

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
