Advertisement

Java网络编程 UDP发送与接收数据

阅读量:

无需熟记程序的具体编写方式,但必须掌握整个程序的运行逻辑,在需要用到代码的时候,只需依据思路迅速定位并调用相应的代码段。

要演示程序 可以把接收端和发送端的ip都改成本机ip,统一通讯端口

必须先运行接收端程序, 然后运行发送端。

发送端程序

复制代码
 import java.net.*;

    
  
    
 /*
    
 需求:通过udp传输方式,将一段文字数据发送出去。,
    
 定义一个udp发送端。
    
 思路:
    
 1,建立updsocket服务。
    
 2,提供数据,并将数据封装到数据包中。
    
 3,通过socket服务的发送功能,将数据包发出去。
    
 4,关闭资源。
    
   12. */
    
  
    
 // 数据发送端程序
    
 class  UdpSend
    
 {
    
 	public static void main(String[] args) throws Exception
    
 	{
    
 		//1,创建udp服务。通过DatagramSocket对象。
    
 		DatagramSocket ds = new DatagramSocket(8888);
    
  
    
 		//2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
    
  
    
 		byte[] buf = "udp data coming".getBytes();
    
 			// 将 buf的全部数据 发送给 192.168.1.254 的 10000端口
    
 		DatagramPacket dp = 
    
 			new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),10000); 
    
  
    
 		//3,通过socket服务,将已有的数据包发送出去。通过send方法。
    
 		ds.send(dp);
    
  
    
 		//4,关闭资源。
    
  
    
 		ds.close();
    
  
    
 	}
    
 }

接收端程序

复制代码
 /*

    
 需求:
    
 定义一个应用程序,用于接收udp协议传输的数据并处理的。
    
   5.   6. 定义udp的接收端。
    
 思路:
    
 1,定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识。
    
 	方便于明确哪些数据过来该应用程序可以处理。
    
   11. 2,定义一个数据包,因为要存储接收到的字节数据。
    
 因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
    
 3,通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
    
 4,通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。
    
 5,关闭资源。
    
   17. */
    
  
    
 // 数据接收端程序
    
 class  UdpRece
    
 {
    
 	public static void main(String[] args) throws Exception
    
 	{
    
 		//1,创建udp socket,建立端点。
    
 		DatagramSocket ds = new DatagramSocket(10000);  // 本机接收数据端口
    
 		while(true)
    
 		{
    
 		//2,定义数据包。用于存储数据。
    
 		byte[] buf = new byte[1024];
    
 		DatagramPacket dp = new DatagramPacket(buf,buf.length);
    
  
    
 		//3,通过服务的receive方法将收到数据存入数据包中。
    
 		ds.receive(dp);//阻塞式方法。 当发送端没有数据时,会拥塞 接收数据端程序
    
 		
    
  
    
 		//4,通过数据包的方法获取其中的数据。
    
 		String ip = dp.getAddress().getHostAddress(); //地址
    
  
    
 		String data = new String(dp.getData(),0,dp.getLength());
    
  
    
 		int port = dp.getPort(); // 端口
    
  
    
 		System.out.println(ip+"::"+data+"::"+port);
    
  
    
 		}
    
 		//5,关闭资源
    
 		//ds.close();
    
  
    
 	}
    
 }

全部评论 (0)

还没有任何评论哟~