From: bdemsky Date: Sat, 7 Mar 2009 01:30:00 +0000 (+0000) Subject: anges X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7848ef65a45fb8f75eaad0f12eb925e5c2569945;p=IRC.git anges --- diff --git a/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestClient.java b/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestClient.java index c35038f1..2d76e454 100644 --- a/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestClient.java +++ b/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestClient.java @@ -28,10 +28,11 @@ public class RainForestClient { Random rand = new Random(seed); RainForestClient rfc = new RainForestClient(); Socket sock = new Socket("dw-8.eecs.uci.edu",9002); + SocketInputStream si=new SocketInputStream(sock); /* Read player type from Server */ byte b[] = new byte[1]; //read planter or lumber jack - String str1 = rfc.readFromSock(sock, b, 1); + String str1 = rfc.readFromSock(si, 1); String str = str1.subString(0, 1); int person; if(str.equalsIgnoreCase("L")) { @@ -76,7 +77,7 @@ public class RainForestClient { // String rstr; while(true) { - rstr = rfc.readFromSock(sock, buf, 9); + rstr = rfc.readFromSock(si, 9); buf = rstr.getBytes(); str1 = rstr.subString(0, 1); @@ -99,7 +100,7 @@ public class RainForestClient { rfc.doOneMove(land, gamer, sock); //Receive ACK from server and do player updates - rstr = rfc.readFromSock(sock, b, 1); + rstr = rfc.readFromSock(si, 1); str1 = rstr.subString(0, 1); // @@ -362,14 +363,14 @@ public class RainForestClient { return b; } - String readFromSock(Socket sock, byte[] buf, int maxBytes) { - int numbytes = 0; - String rstr = new String(""); - while(numbytes < maxBytes) { - int nread = sock.read(buf); - numbytes += nread; - rstr = rstr.concat((new String(buf)).subString(0,nread)); - } - return rstr; + + /** + ** Repeated read until you get all bytes + **/ + String readFromSock(SocketInputStream si, int maxBytes) { + byte []b=new byte[maxBytes]; + if (si.readAll(b)<0) + System.out.println("Error\n"); + return new String(b); } } diff --git a/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestServerThread.java b/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestServerThread.java index a6096609..e7dd2380 100644 --- a/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestServerThread.java +++ b/Robust/src/Benchmarks/Distributed/RainForest/java/RainForestServerThread.java @@ -8,6 +8,7 @@ public class RainForestServerThread extends Thread { GameMap[][] land; Socket sock; + SocketInputStream si; int rows; int cols; int id; @@ -18,6 +19,7 @@ public class RainForestServerThread extends Thread { this.rows = rows; this.cols = cols; this.id = id; + this.si=new SocketInputStream(sock); } public void run() { @@ -39,7 +41,7 @@ public class RainForestServerThread extends Thread { while(true) { /* Check for termination character */ - String readStr = readFromSock(sock, buf, 5); + String readStr = readFromSock(5); String str1 = readStr.subString(0, 1); /* terminate if opcode sent is "t" */ @@ -65,7 +67,7 @@ public class RainForestServerThread extends Thread { sock.write(fillBytes(0, 0, buffer)); /* Read client's move */ - readStr = readFromSock(sock, buffer, 9); + readStr = readFromSock(9); str1 = readStr.subString(0, 1); buffer = readStr.getBytes(); @@ -234,17 +236,16 @@ public class RainForestServerThread extends Thread { // } + + + /** ** Repeated read until you get all bytes **/ - String readFromSock(Socket sock, byte[] buf, int maxBytes) { - int numbytes = 0; - String rstr = new String(""); - while(numbytes < maxBytes) { - int nread = sock.read(buf); - numbytes += nread; - rstr = rstr.concat((new String(buf)).subString(0,nread)); - } - return rstr; + String readFromSock(int maxBytes) { + byte []b=new byte[maxBytes]; + if (si.readAll(b)<0) + System.out.println("Error\n"); + return new String(b); } }