Ну всё же возвращается, когда нужно, чего Валентин ещё хочет?
package com.javarush.task.task30.task3008;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Server {
private static class Handler extends Thread {
private Socket socket;
private Handler(Socket socket) {
this.socket = socket;
}
private String serverHandshake(Connection connection) throws IOException, ClassNotFoundException {
connection.send(new Message(MessageType.NAME_REQUEST, "Превед, медвед. Как звать?"));
Message reply = connection.receive();
String name = reply.getData();
if (reply.getType() == MessageType.USER_NAME) {
if (connectionMap.get(name)==null&&!name.equals("")) {
connectionMap.put(name, connection);
connection.send(new Message(MessageType.NAME_ACCEPTED, "Ты принят, "+name));
return name;
}
else serverHandshake(connection);
}
else serverHandshake(connection);
return null;
}
}
private static Map<String, Connection> connectionMap = new ConcurrentHashMap<>();
public static void sendBroadcastMessage(Message message) {
try {
for (Connection connection : connectionMap.values()) {
connection.send(message);
}
}
catch (IOException e) {
System.out.println("Сообщение не отправлено");
}
}
public static void main (String[] args) throws IOException {
int port = ConsoleHelper.readInt();
ServerSocket serSoc = new ServerSocket(port);
System.out.println("Сервер грантед тикет");
try {
while (true) {
Handler handler = new Handler(serSoc.accept());
handler.start();
}
}
catch (Exception e) {
serSoc.close();
System.out.println(e.getMessage());
}
}
}