Socket基础之服务端(基于UDP)

本文介绍了一个简单的UDP服务器实现过程,包括创建服务器套接字、绑定地址、接收客户端消息并响应等功能。当客户端发送特定退出指令时,服务器将结束连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
  1. //设置“终结点”   
  2. IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 8001);  
  3. //创建与客户机连接的套接字(基于UDP协议无需侦听Socket)   
  4. Socket ConnSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);  
  5. //绑定网络地址   
  6. ConnSocket.Bind(ipe);  
  7.   
  8. Console.WriteLine("This is a Server, host name is {0}", Dns.GetHostName());  
  9. //等待客户机连接   
  10. Console.WriteLine("Waiting for a client");  
  11.   
  12. IPEndPoint client = new IPEndPoint(IPAddress.Any, 0);  
  13. //客户机终结点   
  14. EndPoint Remote = (EndPoint)(client);  
  15. byte[] data = new byte[1024];  
  16. //从客户机接收信息,并将信息保存到数据缓冲区data   
  17. int recv = ConnSocket.ReceiveFrom(data, ref Remote);  
  18. //将接收的信息(客户机ip及端口号和文本信息)打印出来   
  19. Console.WriteLine("Message received from {0}: ", Remote.ToString());  
  20. Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));  
  21.   
  22. //客户机连接成功后,发送欢迎信息   
  23. string welcome = "Server Message:Welcome!!!";  
  24. //字符串与字节数组相互转换   
  25. data = Encoding.ASCII.GetBytes(welcome);  
  26. //给客户机发送信息   
  27. ConnSocket.SendTo(data, data.Length, SocketFlags.None, Remote);  
  28. while (true//时刻准备接收从客户机发回的信息   
  29. {  
  30.     data = new byte[1024];  
  31.     recv = ConnSocket.ReceiveFrom(data, ref Remote);  
  32.     if (Encoding.ASCII.GetString(data, 0, recv) == "exit")  
  33.     {  
  34.         Console.WriteLine("Client has been exit from the connection.");  
  35.         //给客户机发送一条"exit"消息表示欲关闭连接   
  36.         welcome = "Server exit!!!";  
  37.         data = Encoding.ASCII.GetBytes(welcome);  
  38.         ConnSocket.SendTo(data, data.Length, SocketFlags.None, Remote);  
  39.         ConnSocket.Close();  
  40.         break;  
  41.     }  
  42.     else  
  43.     {  
  44.         Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));  
  45.         //告知客户机当前信息已成功接收   
  46.         welcome = "Server has been received successfully!!!";  
  47.         data = Encoding.ASCII.GetBytes(welcome);  
  48.         ConnSocket.SendTo(data, data.Length, SocketFlags.None, Remote);  
  49.     }  
  50. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值