Witam,
Sytuacja wyglada nastepujaco. Program w Javie komunikuje sie przy uzyciu servera xSocket z interfacem zrobionym we Flashu. Komunikacja odbywa sie na jakims Sockecie 8090. Chcialbym zeby ten sam program w javie jednoczesnie mogl komunikowac sie z jakims innym urzadzeniem w sieci majacym wlasne IP. Docelwo interface we flashu ma sterowac tym wlasnie urzadzeniem sieciowym wlasnie poprzez ten program w javie.
Nie bardzo orientueje sie w xSockecie i dlatego nie wiem czy teraz zeby umozliwic ta komunikcaje z tym urzadzeniem sieciowym mam:
a) stowrzyc nowy server (drugi do juz istniejacego servera srv)
b) czy moze moge wykorzytsac istniejacy serwer srv i nawiazac nowe polaczenie poprzez nowy socket
c) czy moze uzyc istniejacego socketa na istniejacym serwerze srv
Kod ponizej
package xsocketserver;
import org.xsocket.connection.*;
public class Main
{
protected static IServer srv = null;
public static void main(String[] args)
{
try
{
srv = new Server(8090, new xSocketDataHandler());
srv.run();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
protected static void shutdownServer()
{
try
{
srv.close();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
package xsocketserver;
import java.io.IOException;
import java.nio.BufferUnderflowException;
import java.nio.channels.ClosedChannelException;
import org.xsocket.*;
import org.xsocket.connection.*;
public class xSocketDataHandler implements IDataHandler
{
public boolean onData(INonBlockingConnection nbc) throws IOException, BufferUnderflowException, ClosedChannelException, MaxReadSizeExceededException
{
try
{
String data = nbc.readStringByDelimiter("\0");
nbc.write(data + "\0");
if(data.equalsIgnoreCase("SHUTDOWN"))
Main.shutdownServer();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
return true;
}
}