java UDP编程

         java中进行udp通信时,提供了DatagramSocket这个类。

    要发送数据时,只需要构造一个DatagramPacket,里面填充要发送的数据和发送的目的地和端口号。DatagramPacket有如下构造函数:DatagramPacket(byte[] buf, int offset, int length,InetAddress address, int port);

   接收数据时,也只需要定义一个接收数据包而已,可以用DatagramPacket(byte[] buf, int length)构造函数;

  下面是接收端的代码:

  

import java.io.IOException;
import java.net.*;

public class UdpReceive {
	 public static void main(String args[]) 
	 {
		 try {
			DatagramSocket s=new DatagramSocket(6002);
			//定义接收数据的缓冲区和长度
			byte text[]=new byte[1024];
			//用来接收数据的数据包
			DatagramPacket p=new DatagramPacket(text,1024);
			//接收数据
			s.receive(p);
			//显示接收到的数据
			String a=new String(text,0,p.getLength());
			System.out.println("接收到"+p.getAddress().getHostName()+"的消息");
			System.out.print(a);
			//关闭套接口
			s.close();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	 }
}
发送端的代码

import java.io.IOException;
import java.net.*;
public class UdpSend {
   public static void main(String args[]) 
   {
	   try {
		//构造套接字
		DatagramSocket s=new DatagramSocket();

	    //构造数据报包
		//DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) 
		String text="wo shi shizhan";
		InetAddress ip=InetAddress.getByName("127.0.0.1");
		DatagramPacket dp=new DatagramPacket(text.getBytes(),0,text.length(),ip,6002);
		
		//发送数据包
		s.send(dp);
		
		//关闭套接口
		s.close();
	} catch (SocketException e) {
		e.printStackTrace();
	} catch (UnknownHostException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
   }
}


你可能感兴趣的:(java UDP编程)