Article directory
Code for sending device
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
private const int Port = 8888;
private const string Device2IPAddress = "接收设备的IP地址";
static void Main(string[] args)
{
Console.WriteLine("请输入一条消息:");
string? message = Console.ReadLine();
#pragma warning disable CS8604 // 引用类型参数可能为 null。
byte[] bytes = Encoding.ASCII.GetBytes(message);
#pragma warning restore CS8604 // 引用类型参数可能为 null。
using (UdpClient client = new UdpClient())
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(Device2IPAddress), Port);
client.Send(bytes, bytes.Length, endPoint);
}
Console.WriteLine("消息已发送!");
}
Accept device code
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
private const int Port = 8888;
public static void Main(string[] args)
{
using (UdpClient client = new UdpClient(Port))
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, Port);
byte[] bytes = client.Receive(ref endPoint);
string message = Encoding.ASCII.GetString(bytes);
Console.WriteLine("收到消息:");
Console.WriteLine(message);
}
}
Send in Chinese
Encode and decode Chinese text using Unicode encoding.
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
private const int Port = 8888;
private const string Device2IPAddress = "接收设备的IP地址";
static void Main(string[] args)
{
Console.WriteLine("请输入一条消息:");
string? message = Console.ReadLine();
#pragma warning disable CS8604 // 引用类型参数可能为 null。
byte[] bytes = Encoding.Unicode.GetBytes(message);
#pragma warning restore CS8604 // 引用类型参数可能为 null。
using (UdpClient client = new UdpClient())
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(Device2IPAddress), Port);
client.Send(bytes, bytes.Length, endPoint);
}
Console.WriteLine("消息已发送!");
}
receive chinese
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Device2
{
private const int Port = 8888;
public static void Main(string[] args)
{
using (UdpClient client = new UdpClient(Port))
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, Port);
byte[] bytes = client.Receive(ref endPoint);
string message = Encoding.Unicode.GetString(bytes);
Console.WriteLine("收到消息:");
Console.WriteLine(message);
}
}
}
Send messages in a loop
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
private constint Port = 8888;
private const string Device2IPAddress = "接收设备的IP地址";
static void Main(string[] args)
{
using (UdpClient client = new UdpClient())
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(Device2IPAddress), Port);
while (true)
{
Console.WriteLine("请输入一条消息:");
string? message = Console.ReadLine();
#pragma warning disable CS8604 // 引用类型参数可能为 null。
byte[] bytes = Encoding.Unicode.GetBytes(message);
#pragma warning restore CS8604 // 引用类型参数可能为 null。
client.Send(bytes, bytes.Length, endPoint);
Console.WriteLine("消息已发送!");
}
}
}
Receive messages in loop
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Device2
{
private const int Port = 8888;
public static void Main(string[] args)
{
using (UdpClient client = new UdpClient(Port))
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, Port);
while (true)
{
byte[] bytes = client.Receive(ref endPoint);
string message = Encoding.Unicode.GetString(bytes);
Console.WriteLine("收到消息:");
Console.WriteLine(message);
}
}
}
}
Receive messages and send messages at the same time
Device 1
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
private const int Port = 8888;
private const string Device2IPAddress = "设备2的IP";
private const string Device1IPAddress = "设备1的IP";
static void Main(string[] args)
{
using (UdpClient client = new UdpClient(Port))
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(Device2IPAddress), Port);
IPEndPoint device1EndPoint = new IPEndPoint(IPAddress.Parse(Device1IPAddress), Port);
Console.WriteLine("已启动设备1。");
// 开启接收消息的线程
var receiveThread = new System.Threading.Thread(() =>
{
while (true)
{
Console.WriteLine("等待接收消息...");
byte[] bytes = client.Receive(ref device1EndPoint);
string receivedMessage = Encoding.Unicode.GetString(bytes);
Console.WriteLine("收到的消息:");
Console.WriteLine(receivedMessage);
}
});
receiveThread.Start();
while (true)
{
Console.WriteLine("请选择操作:");
Console.WriteLine("1. 发送消息");
Console.WriteLine("2. 退出");
string input = Console.ReadLine();
switch (input)
{
case "1":
Console.WriteLine("请输入一条消息:");
string message = Console.ReadLine();
byte[] bytes = Encoding.Unicode.GetBytes(message);
client.Send(bytes, bytes.Length, endPoint);
Console.WriteLine("消息已发送。");
break;
case "2":
Console.WriteLine("设备1已退出。");
receiveThread.Abort();
return;
default:
Console.WriteLine("无效的选择,请重新输入。");
break;
}
}
}
}
Device 2
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
privateconst int Port = 8888;
private const string Device1IPAddress = "设备1的IP";
private const string Device2IPAddress = "设备2的IP";
public static void Main(string[] args)
{
using (UdpClient client = new UdpClient(Port))
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(Device1IPAddress), Port);
IPEndPoint device2EndPoint = new IPEndPoint(IPAddress.Parse(Device2IPAddress), Port);
Console.WriteLine("已启动设备2。");
// 开启接收消息的线程
var receiveThread = new System.Threading.Thread(() =>
{
while (true)
{
Console.WriteLine("等待接收消息...");
byte[] bytes = client.Receive(ref device2EndPoint);
string receivedMessage = Encoding.Unicode.GetString(bytes);
Console.WriteLine("收到的消息:");
Console.WriteLine(receivedMessage);
}
});
receiveThread.Start();
while (true)
{
Console.WriteLine("请选择操作:");
Console.WriteLine("1. 发送消息");
Console.WriteLine("2. 退出");
string input = Console.ReadLine();
switch (input)
{
case "1":
Console.WriteLine("请输入一条消息:");
string message = Console.ReadLine();
byte[] bytes = Encoding.Unicode.GetBytes(message);
client.Send(bytes, bytes.Length, endPoint);
Console.WriteLine("消息已发送。");
break;
case "2":
Console.WriteLine("设备2已退出。");
receiveThread.Abort();
return;
default:
Console.WriteLine("无效的选择,请重新输入。");
break;
}
}
}
}
different character encodings
To use a different encoding, just change the Encoding property directly.
For example, the following code converts the string message into a byte array bytes using UTF-8 encoding.
byte[] bytes = Encoding.UTF8.GetBytes(message);