使用Udp协议实现最简单的服务器与客户端通信
1、服务器端
public static Socket udpServer;
static void Main(string[] args)
{
//1. 创建socket
udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//2. 绑定ip和端口号
udpServer.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.2"), 6666));
//3. 接收数据
//因为要一直接收所以单独设置一个线程。
//当程序结束时,不再接收,所以设置为后台线程
new Thread(ReceiveMessage) {IsBackground = true}.Start();
Console.ReadKey();
}
static void ReceiveMessage()
{
//3. 接收数据
while (true)
{
EndPoint point = new IPEndPoint(IPAddress.Any, 0); //ip和端口号都不需要赋值
byte[] data = new byte[1024];
int length = udpServer.ReceiveFrom(data, ref point); //这个方法会把数据的来源(ip,端口号),放在第二个参数上
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("从ip:" + (point as IPEndPoint).Address.ToString() + "端口号:" +
(point as IPEndPoint).Port.ToString() + "收到了数据:" + message);
}
}
2、客户端
static void Main(string[] args)
{
//1.创建socket
Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//3.向服务器发送消息
EndPoint point = new IPEndPoint(IPAddress.Parse("192.168.1.2"), 6666);
byte[] data = Encoding.UTF8.GetBytes("Hello I am Ffly");
udpClient.SendTo(data, point);
Console.ReadKey();
}
3、效果
- 先运行服务器窗口
- 再运行客户端窗口
- 在服务器的窗口上会显示客户端的连接消息