package net;
import junit.framework.Assert;
import org.junit.Test;
import org.nustaq.net.TCPObjectServer;
import org.nustaq.net.TCPObjectSocket;
import java.io.EOFException;
import java.io.IOException;
import java.util.HashMap;
/**
* Created by ruedi on 22.08.14.
*/
public class TestObjectServer {
public void server() throws IOException {
TCPObjectServer server = new TCPObjectServer(5555);
server.start( new TCPObjectServer.NewClientListener() {
// for each client an own thread is created by default.
// so no need to create a new Thread for the client here
@Override
public void connectionAccepted(TCPObjectSocket client) {
try {
while( true ) {
Object request = client.readObject();
if ( request == null )
return; // connection closed
client.writeObject("Hello, I received: ");
client.writeObject(request);
client.flush();
}
} catch (EOFException eof) {
//e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
volatile boolean ok = false;
public void client() throws Exception {
TCPObjectSocket socket = new TCPObjectSocket("localhost", 5555);
// send request
HashMap toWrite = new HashMap();
toWrite.put("Greetings form year ", 2014 );
toWrite.put("Random ", Math.random() );
socket.writeObject(toWrite);
socket.flush(); // <== important, else nothing happens !
// await 2 responses
System.out.println(socket.readObject());
System.out.println(socket.readObject());
// done, close
socket.close();
ok = true;
}
@Test
public void test() throws Exception {
server();
client();
Thread.sleep(2000);
Assert.assertTrue(ok);
}
}