Rev 212 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
import java.io.*;import java.net.*;import java.util.*;public class P2_Client{private static int soTimeout = 3000; // 3000 ms timeout = 3 secprivate static DatagramSocket socket;private static DatagramPacket packet;private static int portNumber = 1337;public static String readPacket (int maxlen){byte[] buf = new byte[maxlen];packet = new DatagramPacket (buf, buf.length);try {socket.receive (packet);} catch (SocketTimeoutException e) {System.out.println ("Read timed out, requesting retransmit");return null;} catch (PortUnreachableException e) {System.out.println ("Caught PortUnreachableException, are you" +" sure the server is running?");System.exit(1);} catch (IOException e) {System.out.println ("Caught exception in readPacket()");e.printStackTrace();return null;}return new String (buf, 0, packet.getLength()/*- 1*/);}public static boolean writePacket (String msg) throws Exception{InetAddress address = InetAddress.getLocalHost();int port = portNumber;byte[] buf = msg.getBytes();packet = new DatagramPacket (buf, buf.length, address, port);try {socket.send (packet);} catch (PortUnreachableException e) {System.out.println ("Caught PortUnreachableException, are " +"you sure the server is running?");System.exit(1);} catch (IOException e) {System.out.println ("Caught exception in writePacket()");e.printStackTrace();return false;}return true;}public static void main (String[] args) throws Exception{socket = new DatagramSocket();socket.connect (InetAddress.getLocalHost(), portNumber);socket.setSoTimeout (soTimeout);BufferedReader kbd = new BufferedReader (new InputStreamReader (System.in));writePacket ("DROP3");System.out.print ("% decode: ");String msg = kbd.readLine();String reply;boolean done = false;while (!done){writePacket (msg);reply = readPacket(5);while (reply == null){System.out.println ("Packet lost, retransmitting...");writePacket (msg);reply = readPacket(5);}if (reply.equals("QUIT")){done = true;continue;}System.out.println ("-> reply: " + reply);System.out.print ("% decode: ");msg = kbd.readLine();}}}