2012-02-18 12 views
0

iは、同じファイル内のJavaサーバとクライアントを作成したい...これはプロジェクトJavaサーバソケット

サーバ--->クライアント/サーバ----> CLIENT

の私の構造であるため、

SERVERとCLIENT部分のコーディングは非常にシンプルですが、CLIENT/SERVERの部分を作成するときに問題があります。ここでは、自分のコードはCLIENT部分のみを実行し、SERVER部分は起動できません。スレッドのrun()コードが原因です。私はclient.runを実行する問題()とコードを持っている上記のコードから

package com.main.datadistributor; 

    import java.io.IOException; 
    import java.net.ServerSocket; 

    public class Slave { 
     public static void main(String args[]) throws IOException{ 
     Config cfg = new Config("Slave"); 
     String MasterServerIP = cfg.getProperty("MasterServerIP"); 
     String MasterServerPort = cfg.getProperty("MasterServerPort"); 
     String SlaveServerPort = cfg.getProperty("SlaveServerPort"); 

     Client client = new Client(MasterServerIP,Integer.parseInt(MasterServerPort),"SLAVEONE"); 
     client.run(); 

     int numClient = 0; 
     ServerSocket listener = new ServerSocket(Integer.parseInt(SlaveServerPort)); 
     System.out.println("Server starts running"); 

     try{ 
      while(true){ 
       new Server(listener.accept(), numClient++, Integer.parseInt(SlaveServerPort), "SLAVESERVER").start(); 
      } 
     } finally { 
      listener.close(); 
     } 


    } 
} 

はちょうど

+1

http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html –

+0

client.run()とは何ですか? ?なぜ、この事のためのスレッドはありませんか? –

答えて

1

Clientが何であるかを知っている、または見ないようにしてくださいセクションで下に新しいサーバーを実行するために先に進むことなく、そこに停止しますそのコードは私たちの能力を制限しています。 run()メソッドがある場合、Runnableを実装する可能性があります。そのため、runメソッドを直接呼び出す代わりにnew Thread(client).start()を呼び出すことができます。

+0

愚かな私は、それを解決するようだ... – user1217609

2

ClientサブクラスThreadの場合は、run()ではなくstart()に電話する必要があります。 Runnableが実装されている場合は、Threadをインスタンス化して実行し、スレッドのstart()メソッドを呼び出す必要があります。

+0

愚かな私は、それを解決するようだ...ありがとう – user1217609

関連する問題