Fixed stopping and improved test server

This commit is contained in:
2014-05-06 13:50:08 +02:00
parent a49fc28437
commit 87607130bb
2 changed files with 78 additions and 63 deletions
@@ -156,6 +156,7 @@ public class Fdaq {
} catch (IOException e) {
// Ignore because not relevant at this stage
}
running = false;
}
}
@@ -39,25 +39,31 @@ public class FdaqServer {
public void startKillSocket(int port) {
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
byte[] requestBuffer = new byte[1 * 4]; // 2 times integers
ByteBuffer bytebuffer = ByteBuffer.wrap(requestBuffer);
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
in.read(requestBuffer);
bytebuffer.getInt();
logger.info("Terminate sender");
stop=true;
out.close();
in.close();
socket.close();
try{
while(true){
Socket socket = serverSocket.accept();
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
byte[] requestBuffer = new byte[1 * 4]; // 2 times integers
ByteBuffer bytebuffer = ByteBuffer.wrap(requestBuffer);
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
in.read(requestBuffer);
bytebuffer.getInt();
logger.info("Terminate sender");
stop=true;
out.close();
in.close();
socket.close();
}
}
finally{
serverSocket.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -67,53 +73,61 @@ public class FdaqServer {
stop = false;
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
logger.info("Start sending ...");
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
byte[] requestBuffer = new byte[2 * 4]; // 2 times integers
ByteBuffer bytebuffer = ByteBuffer.wrap(requestBuffer);
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
in.read(requestBuffer);
bytebuffer.getInt(); // This will always be 26
int nMessages = bytebuffer.getInt(); // Contains number of images to
// receive
// System.out.println("Messages to send: "+nMessages);
for (int t = 0; t < nMessages; t++) {
if(stop){ // Terminate loop if kill socket got a request
break;
}
// System.out.println(t+" "+0+" "+0+" "+ (-t));
byte[] dataBuffer = new byte[4 * 4]; // 4 times Integers
ByteBuffer buffer = ByteBuffer.wrap(dataBuffer); // 4 times
// Integers
buffer.order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(t);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(-t);
out.write(dataBuffer);
out.flush();
if(t>1028){ // The first 1028 images are skipped anyways
Thread.sleep(10);
try{
while(true){
stop = false;
Socket socket = serverSocket.accept();
logger.info("Start sending ...");
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
byte[] requestBuffer = new byte[2 * 4]; // 2 times integers
ByteBuffer bytebuffer = ByteBuffer.wrap(requestBuffer);
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
in.read(requestBuffer);
bytebuffer.getInt(); // This will always be 26
int nMessages = bytebuffer.getInt(); // Contains number of images to
// receive
// System.out.println("Messages to send: "+nMessages);
for (int t = 0; t < nMessages; t++) {
if(stop){ // Terminate loop if kill socket got a request
break;
}
// System.out.println(t+" "+0+" "+0+" "+ (-t));
byte[] dataBuffer = new byte[4 * 4]; // 4 times Integers
ByteBuffer buffer = ByteBuffer.wrap(dataBuffer); // 4 times
// Integers
buffer.order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(t);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(-t);
out.write(dataBuffer);
out.flush();
if(t>1028){ // The first 1028 images are skipped anyways
Thread.sleep(10);
}
}
out.close();
in.close();
socket.close();
}
}
out.close();
in.close();
socket.close();
serverSocket.close();
finally{
serverSocket.close();
}
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}