Advertisement

(C#)使用udp协议实现消息的接收

阅读量:

udp-服务器端的实现

使用udp协议传输数据不需要建立连接

第一步是建立一个Socket。随后,在第二步中需要将服务器上的Socket与指定的IP地址和服务端口进行绑定。这样一来,在指定的IP地址和服务端口处就能接收到数据。

第三阶段的数据接收工作,在本例中采用了新建线程的方式进行处理,并将该线程配置为后台线程;为此无需后续处理接收到的消息。在ReceiveMessage函数中用于实现接收到消息;该方法负责记录接收到的数据信息,并将接收到的数据源IP地址及端口号存储在一个Endpoint对象中

复制代码
 class Program

    
     {
    
     private static Socket udpServer;
    
     static void Main(string[] args)
    
     {
    
         //1.Socket creat
    
         udpServer = new Socket
    
             (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    
         
    
         //2.Bind ip and port
    
         udpServer.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.103"),7788));
    
  
    
         //3.receive data
    
         new Thread(ReceiveMessage) {
    
             IsBackground = true}.Start();
    
         
    
         Console.ReadKey();
    
     }
    
     static void ReceiveMessage()
    
     {
    
         while (true)
    
         {
    
             EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
    
             byte[] data = new byte[1024];
    
             int length = udpServer.ReceiveFrom(data, ref remoteEndPoint);//此方法把数据来源ip、port放到第二个参数中
    
             string message = Encoding.UTF8.GetString(data, 0, length);
    
             Console.WriteLine
    
                 ("从ip" + (remoteEndPoint as IPEndPoint).Address.ToString()
    
                 + ":" + (remoteEndPoint as IPEndPoint).Port + "Get" + message);
    
         }
    
     }
    
     }

2.udp-客户端的实现

在客户端上只需建立一个Socket,并为Socket指定接收的数据源IP地址及端口参数。然后将数据传输至该Server端点即可完成任务。

复制代码
 class Program

    
     {
    
     static void Main(string[] args)
    
     {
    
         //创建Socket
    
         Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    
  
    
         // Send message
    
         while (true)
    
         {
    
             EndPoint serverPoint = new IPEndPoint(IPAddress.Parse("192.168.1.103"), 7788);
    
             string message = Console.ReadLine();
    
             byte[] data = Encoding.UTF8.GetBytes(message);
    
             udpClient.SendTo(data, serverPoint);
    
         }
    
  
    
         udpClient.Close();
    
         Console.ReadKey();
    
     }
    
     }

全部评论 (0)

还没有任何评论哟~