import java.io.*;
import java.net.*;
public class UDPServer12_6 
{
	public static void main(String[] args)
	{
		try
		{
			DatagramSocket datasocket=new DatagramSocket(8000);
			System.out.println("UDP通信服务器端程序已启动.....");
			System.out.println("绑定的端口号："+datasocket.getLocalPort());
			System.out.println("接收缓冲区默认大小："+datasocket.getReceiveBufferSize());
			System.out.println("发送缓冲区默认大小："+datasocket.getSendBufferSize());
			byte[] buf=new byte[1024];
			DatagramPacket datapacket=new DatagramPacket(buf,buf.length);
			while(true)
			{
				datasocket.receive(datapacket);
				InetSocketAddress receivesourceaddr=(InetSocketAddress)datapacket.getSocketAddress();
				System.out.println("接收的数据源IP地址是："+receivesourceaddr.getAddress().getHostAddress()+"端口号是："+receivesourceaddr.getAddress().getLocalHost());
				byte[] recdata=datapacket.getData();
				System.out.println("收到的数据是：");
				for(int i=0;i<datapacket.getLength();i++)
				{
					System.out.print((char)recdata[i]);
				}
				System.out.println();
				String echostring="echo from:"+datasocket.getLocalAddress().getHostAddress()+"port:"+datasocket.getLocalPort();
				byte[] senddata=echostring.getBytes();
        		DatagramPacket echopacket=new DatagramPacket(senddata,senddata.length);
        		echopacket.setSocketAddress(receivesourceaddr);
        		echopacket.setData(senddata);
        		datasocket.send(echopacket);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
