xSocket pytanie techniczne

0

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;
    }
}
0

Odpwoiem sobie sam. Problem byl w tym ze .run() jest poleceniem blokujacym i trzeba bylo abo zastapic je .start()

try
        {
            srv = new Server(8090, new xSocketDataHandler());
            srv.start();
srv2 = new Server(8091, new xSocketDataHandler());
            srv2.run();
        }
        catch(Exception ex)
        {
            System.out.println(ex.getMessage());
        }

lub zrobic cos takiego

new Thread()
{
  @Override
  public void run()
  {
       srv = new Server(8090, new xSocketDataHandler());
            srv.run();
  }
}.start();
new Thread()
{
  @Override
  public void run()
  {
       srv2 = new Server(8091, new xSocketDataHandler());
            srv2.run();
  }
}.start();

1 użytkowników online, w tym zalogowanych: 0, gości: 1