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