В настоящее время я работаю над проектом, где мне нужно создать многопоточный сервер. Я только начал работать с потоками, поэтому, пожалуйста, поймите меня.Multi Thread Java Server
До сих пор у меня есть класс, который реализует объект Runnable
, ниже вы можете увидеть код, который у меня есть для метода запуска, предоставленного объектом Runnable
.
public void run() {
while(true) {
try {
clientSocket = serversocket.accept();
for (int i = 0; i < 100; i++) {
DataOutputStream respond = new DataOutputStream(clientSocket.getOutputStream());
respond.writeUTF("Hello World! " + i);
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
//
}
}
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
Bellow - это основной метод, который создает новый объект класса сервера и создает угрозу. инициализация потока.
public static void main(String args[]) {
new Thread(new Server(1234, "", false)).start();
}
Я знаю, что это создает новый поток, но он не обслуживает сразу несколько клиентов. Первому клиенту необходимо закрыть соединение для второго, которое будет обслуживаться. Как я могу создать многопроцессорный сервер, который будет обслуживать разные клиентские сокеты одновременно? Создать нить на clientSocket = serverSocket.accept();
Вы должны создать вспомогательный класс, который реализует Runnable и который обрабатывает взаимодействие потока данных для одного пользователя. затем в своем основном классе создайте эти вспомогательные классы с каждым сокетом и запустите их в своем потоке. Лучше всего, если вы используете ThreadPool для этого. Обратите внимание, что для этого есть учебники, в том числе и Oracle, и я очень удивлен, что вы еще не нашли их. Очень удивлен. –
поиск учебника для ServerSockets. Готов поспорить, что каждый хороший учебник по этому вопросу опишет вашу проблему с решением – mschenk74
Возможно, вам придется работать на ваших условиях поиска. Попробуйте выполнить поиск в Google: [java socket communication tutorial multithreaded] (https://www.google.com/?gws_rd=ssl#q=java+socket+communications+tutorial+multithreaded). Или просто нажмите на мою ссылку. Первый удар. –