Как сделать так, чтобы TCP и UDP сервер начинали? Где только один из тех, кто начинает - PullRequest
0 голосов
/ 15 сентября 2011

Когда я загружаюсь, TCPServer начинает работать, но после этого UDPServer не запускается?И если я поменяю их, всегда запускается первый.Как я могу загрузить оба?

Все остальные загружаются нормально.Как я могу решить это?

/**
 * Boot baby boot
 * @param args 
 */
public static void main(String[] args)
{       
    /* Heavy load - 1 */
  new Thread(new Runnable() 
  {
      public void run()
      {
        SwingUtilities.invokeLater(new Runnable() 
        {      
            public void run() 
            {              
                TCPServer tcpserver = null;
                try {
                    tcpserver = new TCPServer(8888);           
                }
                catch (IOException e){
                    e.printStackTrace(System.err);
                }
                tcpserver.waitForConnections();              
            }
        });                
      }
  }).start();

  new Thread(new Runnable() 
  {
      public void run()
      {
        SwingUtilities.invokeLater(new Runnable() 
        {      
            public void run() 
            {              
                UDPServer udpserver = null;
                try {
                    udpserver = new UDPServer(8889);           
                }
                catch (IOException e){
                    e.printStackTrace(System.err);
                }
                udpserver.waitForConnections();
            }
        });                 
      }
  }).start();           

    /* Heavy load - 2 */                     
    try {                                                                      
        Game3Dstart();        
    } catch (Exception ex) {

    }

    /* Finally */
    j = new main();
    j.setVisible(true);                
}

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Это потому что waitForConnections блокирует.Вам нужно запустить их асинхронно, в отдельных потоках.

new Thread(new Runnable(){
    public void run(){
        TCPServer tcpserver = null;
        try {
            tcpserver = new TCPServer(8888);             
        }
        catch (IOException e){
            e.printStackTrace(System.err);
        }
        tcpserver.waitForConnections();  
    }
}).start();

new Thread(new Runnable(){
    public void run(){
        UDPServer udpserver = null;
        try {
            udpserver = new UDPServer(8889);
        }
        catch (IOException e){
            e.printStackTrace(System.err);
        }
        udpserver.waitForConnections();
    }
}).start();
2 голосов
/ 15 сентября 2011

Разместите серверы UDP и TCP в разные потоки:

/* Heavy load - 1 */
SwingUtilities.invokeLater(new Runnable() 
{      
    public void run() 
    {              
        TCPServer tcpserver = null;
        try {
            tcpserver = new TCPServer(8888);             
        }
        catch (IOException e){
            e.printStackTrace(System.err);
        }
        tcpserver.waitForConnections();           

        catch (IOException e){
            e.printStackTrace(System.err);
        }

    }
} 
/* Heavy load - 1 */
SwingUtilities.invokeLater(new Runnable() 
{      
    public void run() 
    {              

        UDPServer udpserver = null;
        try {
            udpserver = new UDPServer(8889);

        }
        catch (IOException e){
            e.printStackTrace(System.err);
        }
        udpserver.waitForConnections();
    }
}); 

);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...