Даже тот, который требует лишь наименование и сигнатуру разрабатываемого метода
package com.javarush.task.task30.task3008;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;
public class Server {
private static Map<String, Connection> connectionMap = new ConcurrentHashMap<>();
public static void sendBroadcastMessage(Message message){
connectionMap.forEach((name, connection) -> {
try{
connection.send(message);
} catch (IOException e) {
System.err.println("Broadcast send error on " + name);
}
});
}
public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket socket=null;
try{
serverSocket = new ServerSocket(ConsoleHelper.readInt());
System.out.println("Server start");
while(true){
socket = serverSocket.accept();
Handler handler = new Handler(socket);
handler.start();
}
} catch (IOException e){
System.out.println("Error port reading from console");
try{serverSocket.close();} catch (IOException er){}
}
}
private static class Handler extends Thread{
private Socket socket;
public Handler(Socket socket){
this.socket=socket;
}
private String serverHandShake(Connection connection) throws Exception{
while(true){
connection.send(new Message(MessageType.NAME_REQUEST));
Message answer = connection.receive();
if(answer.getType()!=MessageType.USER_NAME) continue;
String userName = answer.getData();
if(userName==null||userName.isEmpty()) continue;
if(connectionMap.containsKey(userName)) continue;
connectionMap.put(userName, connection);
connection.send(new Message(MessageType.NAME_ACCEPTED));
return userName;
}
}
}
}