java服务器套接字

时间:2012-02-18 04:52:28

标签: java serversocket

我想在同一个文件中创建一个java服务器和客户端...因为这是我的项目结构

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

SERVER和CLIENT部分的编码非常简单,但是在为CLIENT / SERVER部件创建时遇到问题。我的代码只能运行CLIENT部分而不能启动SERVER部分。因为我的线程是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();
        }


    }
}

从上面的代码我有问题只执行client.run()和代码只是停在那里而不继续在下面的尝试部分执行新的服务器

2 个答案:

答案 0 :(得分:2)

如果Client子类Thread,那么您需要致电start(),而不是run()。如果它实现了Runnable,那么你需要实例化Thread来执行它并调用线程的start()方法。

答案 1 :(得分:1)

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