michael_hartman_cz

TCP klient Karel 1.9 [PSI]

Feb 17th, 2013
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. class Client {
  2.  
  3.     public static void cli_main(int port, String servername) throws IOException {
  4.         Socket echoSocket = null;
  5.         PrintWriter out = null;
  6.         BufferedReader in = null;
  7.         //init connection
  8.         try {
  9.             echoSocket = new Socket(servername, port);
  10.             out = new PrintWriter(echoSocket.getOutputStream(), true);
  11.             in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
  12.         } catch (UnknownHostException e) {
  13.             System.err.println("Unknown host: " + servername);
  14.             System.exit(1);
  15.         } catch (IOException e) {
  16.             System.err.println("Couldn't get I/O for " + servername);
  17.             System.exit(1);
  18.         }
  19.         int code = 0, nameStart = 0, nameEnd = 0, x = 0, y = 0, pX = 0, pY = 0;
  20.         String osloveni = "Oslovuj mne ", request = "", response = "", name = "";
  21.         while (echoSocket.isConnected() && !(code == 260 || code == 530 || code == 550 || code == 571 || code == 572)) {
  22.             response = "";
  23.             while (!response.endsWith("\r\n")) {
  24.                 response += (char) in.read();
  25.             }
  26.             //print response
  27.             System.out.print("Receiving: " + response);
  28.             code = Integer.parseInt(response.substring(0, 3));
  29.             if (code == 210) {//initial communication
  30.                 nameStart = response.indexOf(osloveni) + osloveni.length();
  31.                 nameEnd = response.indexOf(".", nameStart);
  32.                 name = response.substring(nameStart, nameEnd);
  33.                 System.out.println("Parsed name: " + name);
  34.                 request = name + " VLEVO\r\n";
  35.             }
  36.             if (code == 580) { //processor damaged
  37.                 request = name + " OPRAVIT "
  38.                         + response.substring(response.length() - 3, response.length() - 2) //proc number
  39.                         + "\r\n";
  40.             }
  41.             if (code == 240) { //OK, bot is ready
  42.                 //AI goes here                    
  43.                 x = Integer.parseInt(response.substring(response.indexOf("(") + 1, response.indexOf(",")));
  44.                 y = Integer.parseInt(response.substring(response.indexOf(",") + 1, response.indexOf(")")));
  45.                 if (Math.abs(y) < Math.abs(pY) || Math.abs(x) < Math.abs(pX)) { //i am closer than last time
  46.                     request = name + " KROK\r\n";
  47.                 } else {
  48.                     request = name + " VLEVO\r\n"; //last time i went wrong
  49.                 }
  50.                 if (x == 0 && y == 1) {
  51.                     request = name + " VLEVO\r\n";
  52.                 }
  53.                 if (x == 0 && y == 0) { //im done
  54.                     request = name + " ZVEDNI\r\n";
  55.                 }
  56.                 if (x == pX && y == pY) { //no move last time
  57.                     request = name + " KROK\r\n";
  58.                 }
  59.             }
  60.             if (code != 260) {
  61.                 pX = x;
  62.                 pY = y;
  63.                 out.print(request); //send request to server
  64.                 out.flush(); //flush after each message
  65.                 System.out.println("sending: " + request);
  66.             }
  67.         }
  68.         //end transmision
  69.         System.out.println("\nConnection closed by foreign host: " + echoSocket.getInetAddress() + "\n");
  70.         out.close();
  71.         in.close();
  72.         echoSocket.close();
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment