/** *UDPServer *@author Winty wintys@gmail.com *@version 2008-12-15 */ import java.io.*; import java.net.*; class UDPServer{ public static void main(String[] args)throws IOException{ //DatagramSocket server = new DatagramSocket(5050); int ser_port = 5050; int argc = args.length; int i = 0; while (i < argc) { System.out.printf("args[%d]:[%s]\n",i,args[i]); if (args[i].equals("-sp") && argc >= i + 1) { ser_port = Integer.parseInt(args[i + 1]); i = i + 2; continue; } else { System.out.printf("args[%d]:[%s] is not support! or need a arg \n",i,args[i]); System.exit(1); } } DatagramSocket server = new DatagramSocket(ser_port); //InetAddress my = InetAddress.getLocalHost(); InetAddress my = InetAddress.getByName("127.0.0.1"); String myAddr = my.toString(); System.out.printf("myAddr:%s\n",myAddr); while(true) { byte[] recvBuf = new byte[4096]; DatagramPacket recvPacket = new DatagramPacket(recvBuf , recvBuf.length); server.receive(recvPacket); String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength()); System.out.println("from client:" + recvStr); int port = recvPacket.getPort(); InetAddress addr = recvPacket.getAddress(); String sendStr = addr.toString() + ":" + port ; System.out.println(sendStr); String cliAddr = addr.toString(); System.out.printf("cliAddr:%s\n",cliAddr); byte[] sendBuf; sendBuf = sendStr.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendBuf , sendBuf.length , addr , port ); server.send(sendPacket); if(cliAddr.equals(myAddr)) { if(recvStr.equals("quit")) { break; } } } server.close(); } }