Сокет 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

2 ответа

Если Client подклассы Threadтогда вам нужно позвонить start()не run(), Если это реализует Runnable тогда вам нужно создать экземпляр Thread выполнить его и вызвать поток start() метод.

Не зная что Client или видение его кода ограничивает нашу способность помочь. Если у него есть run() метод, который он может реализовать Runnableтак что вы можете просто позвонить new Thread(client).start() вместо прямого вызова метода run.

Другие вопросы по тегам