2011-09-14 16 views
0

私はこれを起動すると、TCPServerの起動が始まりますが、その後はUDPServerが実行されません。そして、それらをいつも入れ替えると、最初のものが走ります。どのように私は両方を起動できますか?TCPとUDPサーバーの両方を開始するには?どこから始めるのか

残りのすべてが正常に起動します。どうすればこの問題を解決できますか?

/** 
* 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);     
} 
+0

ない、この世界にヒールが/のようなオープンなものinvokeLaterに包まれた接続()、スプラッシュ画面を探し、Runnableを#スレッドに包まれたオープン接続されている理由のために、行われていれば、その後 'j.setVisible(ラップtrue); 'into invokeAndWait()、それは – mKorbel

答えて

4

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(); 
+0

優れています。それは素晴らしいそれは感謝を働かせます。 – YumYumYum

2

異なるスレッド上で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(); 
    } 
}); 

)。

+0

私はあなたのアプローチを試しましたが、それでも1つしか動作しません。しかし最後にSwingUtilitiesを削除することで、スレッドを追加するだけでうまく動作します。ありがとう!! – YumYumYum

関連する問題