Клиент не запускается повторно

139
07 ноября 2019, 23:50

Имеется сервер и клиент. Сервер может обрабатывать сразу несколько клиентов,но если клиенты закрываются,и заново подключаются то ничего не происходит. В чем может быть проблема?

package com.company;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.HashMap;
import java.util.Map;
public class ServerLoader {
  private static ServerSocket server;
  private static Map < Socket, ClietnHandler > handlers = new HashMap < > ();
  public static void main(String[] args) throws IOException {
    start();
    handle();
    end();
  }
  private static void handle() {
    int x = 5;
    while (true) {
      try {
        Socket client = server.accept();
        ClietnHandler handler = new ClietnHandler(client);
        handler.start();
        handlers.put(client, handler);
        System.out.println(server);
      } catch (SocketException ex) {
        // return;
      } catch (IOException ex) {
        ex.printStackTrace();
      }
      try {
        Thread.sleep(10);
      } catch (InterruptedException ex) {}

    }
  }
  public static void sendPacket(Socket receiver, String text) {
    try {
      DataOutputStream dos = new DataOutputStream(receiver.getOutputStream());
      dos.writeUTF(text);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public static void start() {
    try {
      server = new ServerSocket(8888);
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
  public static boolean isStarted() {
    return server != null && !server.isClosed();
  }
  public static void end() {
    System.out.println("Close");
    try {
      server.close();
      //   server = null;
    } catch (IOException ex) {
      ex.printStackTrace();
    }
    System.exit(0);
  }

  public static ClietnHandler getHandler(Socket socket) {
    return handlers.get(socket);
  }
  public static void invalidate(Socket socket) {
    handlers.remove(socket);
  }
}

Клиент:

import packet.OPacket;
import java.io.*;
import java.net.Socket;
public class ClientLoader {
  private static Socket socket;
  public static void main(String[] args) throws IOException {
    connect();
    handle();
  }
  public static void sendPacket(OPacket packet) {
    try {
      ObjectOutputStream dos = new ObjectOutputStream(socket.getOutputStream());
      dos.writeObject(packet.getState());
      dos.flush();
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
  public static Socket getSocket() {
    return socket;
  }
  public static void connect() {
    try {
      socket = new Socket("localhost", 8888);
      System.out.println(socket);
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
  public static void handle() {
    TextFieldTest p = new TextFieldTest();
  }
  public static void end() {
    try {
      System.out.println("close clbent");
      socket.close();
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}
READ ALSO
Нужна функция , которая будет выводить на консоль строки из массива строк(заданного) средней длинны и меньше

Нужна функция , которая будет выводить на консоль строки из массива строк(заданного) средней длинны и меньше

не получается сделать так, чтобы выводились именно строки с длинной меньше средней, не понимаю, как реализовать такую ф-циюДлинны я уже посчитал,...

142
Наследование коллекций

Наследование коллекций

В моей программе реализован абстрактный класс Users от которого наследуются классы Worker и CustomerЯ хочу создать списки пользователей отдельно...

152
Как подставлять значения в нужные поля средствами spring при написании тестов?

Как подставлять значения в нужные поля средствами spring при написании тестов?

Требуется написать тесты с использованием restTemplate чтобы протестировать рест-сервисы на спринге

155
Как реализовать тайм-аут на кнопке?

Как реализовать тайм-аут на кнопке?

Я хочу поставить на кнопку что-то вроде таймера, то есть у меня есть кнопка, после нажатия она становится неактивной, скажем, на 2 часа, через...

154