2012-02-18 224 views
0

我想创造在同一文件中的Java服务器和客户端...因为这是我的项目的结构Java服务器套接字

服务器 - >客户端/服务器---->客户端

SERVER和CLIENT部分的编码非常简单,但是当为CLIENT/SERVER部分创建时我遇到问题..我的代码只能运行CLIENT部分而不启动SERVER部分。因为我的线程运行()代码。

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(); 
     } 


    } 
} 

从上面的代码,我有问题只执行client.run()和代码只是停在那里不前进到在try部分下执行新的服务器

+1

http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html – 2012-02-18 04:56:04

+0

什么是client.run(); ?为什么不是这个东西的线程呢? – 2012-02-18 04:58:49

回答

1

不知道什么Client是,或看其代码限制了我们的帮助能力。如果它有一个run()方法它可能实现Runnable,所以你可以直接调用new Thread(client).start()而不是直接调用它的run方法。

+0

傻我,似乎解决了它...谢谢 – user1217609 2012-02-18 05:11:42

2

如果Client小类Thread,那么你需要拨打start(),而不是run()。如果它实现Runnable,那么你需要实例化一个Thread来执行它并调用线程的start()方法。

+0

傻我,似乎解决了它...谢谢 – user1217609 2012-02-18 05:10:46