java网络编程:UDP

今天看了UDP协议的东西,还是编写一个简单的客户端和服务器:

客户端代码:

public class UDPClient {
	private static final int TIMEOUT = 3000;
	private static final int MAXTRIES = 5;
	public static void main(String[] args) {
		try {
			InetAddress address = InetAddress.getByName("localhost");
			byte[] bytesRead = "Echo UDP!".getBytes();
			int port = 80;
			DatagramSocket socket = new DatagramSocket();
			socket.setSoTimeout(TIMEOUT);
			DatagramPacket packet = new DatagramPacket(bytesRead, bytesRead.length,address,port);
			DatagramPacket received = new DatagramPacket(new byte[bytesRead.length], bytesRead.length);
			int tries = 0;
			boolean response = false;
			do{
				try {
					socket.send(packet);
					socket.receive(received);
					if(!received.getAddress().equals(address)){
						System.out.println("unknown resource");
					}
					response = true;
				} catch (IOException e) {
					tries++;
					System.out.println("Time out "+(MAXTRIES-tries));
					e.printStackTrace();
				}
			}while((!response)&&(tries<MAXTRIES));
			if(response){
				System.out.println("Received:"+new String(packet.getData()));
			}else{
				System.out.println("No response");
			}
			socket.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (SocketException e) {
			e.printStackTrace();
		}
	}
}

 

服务端:

public class UDPServer {
	private static final int ECHOMAX = 255;
	public static void main(String[] args) {
		int port = 80;
		try {
			DatagramSocket socket = new DatagramSocket(port);
			DatagramPacket packet = new DatagramPacket(new byte[ECHOMAX], ECHOMAX);
			while(true){
				socket.receive(packet);
				System.out.println("handling address:"+packet.getAddress()+"on port :"+packet.getPort());
				socket.send(packet);
				packet.setLength(ECHOMAX);
			}
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

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