/***********************************/ /* Client.java */ /* main part */ /* */ /***********************************/ import java.io.*; import java.util.*; import java.net.*; import java.lang.*; class Client { public static void main(String a[]) throws SocketException, IOException { String host = new String(""); //soccer server Name. int port = 6000; //default port number. int m_port; //port after connected to server. InetAddress m_host; String team = new String("Nippon"); //team name. DatagramSocket socket; char side; // side{left, right} int iside; // 1 = left side, -1 = right side int p_no; // player number try { for( int c = 0 ; c < a.length ; c += 2 ) { if( a[c].compareTo("-h") == 0 ) host = a[c+1]; else if( a[c].compareTo("-p") == 0 ) port = Integer.parseInt(a[c+1]); else if( a[c].compareTo("-t") == 0 ) team = a[c+1]; else throw new Exception(); } } catch(Exception e) { System.err.println(""); System.err.println("USAGE: [-parameter value]"); System.err.println(""); System.err.println(" Parameters value default"); System.err.println(" ------------------------------------"); System.err.println(" h host_name localhost"); System.err.println(" port port_number 6000"); System.err.println(" team team_name Nippon"); System.err.println(""); System.err.println(" Example:"); System.err.println(" agent -h ***.&&&.ac.jp -p 6000 -t Japan"); System.err.println(" or"); System.err.println(" agent -h 157.110.**.***"); return; } /* send init command to[ host port] */ socket = new DatagramSocket(); m_host = InetAddress.getByName(host); String s = "(init " + team + ")"; // version control string is "(init " + team + "(version 4.00))". byte[] send_data = new byte[s.length()]; send_data = s.getBytes(); try{ DatagramPacket p_out = new DatagramPacket(send_data, send_data.length, m_host, port); socket.send(p_out); } catch (Exception e){ System.err.println(e); } // recieve the first reply from the soocer server. // it contains side and player number from "(init l 8 before_kick_off)". int MAX_LENGTH = 1028; /* message buffer length */ byte[] buffer = new byte[MAX_LENGTH]; byte[] data = new byte[MAX_LENGTH]; try{ DatagramPacket p_in = new DatagramPacket(buffer, buffer.length); socket.receive(p_in); data = p_in.getData(); String message = new String(data, 0, p_in.getLength()); System.out.println("received on port =" + p_in.getPort()); System.out.println("received message =" + message); m_port = p_in.getPort(); // after "init", use port[xxxx] recieved packet. System.out.println("retruned port n# =" + m_port); // parse reply from SoccerServer. StringTokenizer tokenizer = new StringTokenizer(message,"() "); if( tokenizer.nextToken().compareTo("init") != 0) throw new IOException(message); side = tokenizer.nextToken().charAt(0); p_no = Integer.parseInt(tokenizer.nextToken()); System.out.println("side & player-number = " + side + p_no); } catch (Exception e){ System.err.println(e); } } }