Как создать серверы и клиенты с сокетом? - PullRequest
0 голосов
/ 08 октября 2011

Мне нужно создать приложение, в котором у меня работает четыре сервера и один клиент отправляет несколько пакетов на эти серверы, но эти серверы должны постоянно работать, получая что-то от клиента (отправителя).Итак, я создаю оба класса, клиент и сервер:

public class Server {

    public Event receive(int port) {

        Evento event = null;
        try {
            ServerSocket ss = new ServerSocket(port);

            Socket s = ss.accept();
            InputStream is = s.getInputStream();
            ObjectInputStream ois = new ObjectInputStream(is);

             evento = (Evento) ois.readObject();

            is.close();
            s.close();
            ss.close();

        }catch(Exception e){
            System.out.println(e);
        }

        return event;
    }
}



public class Client {
    public void send(Event event, int port) {
        try {
            Socket s = new Socket("localhost", 2002);
            OutputStream os = s.getOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(os);

            oos.writeObject(event);
            oos.close();
            os.close();
            s.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Но, как я уже сказал, мне нужно, чтобы эти серверы постоянно работали, если я тестирую один раз, это нормально, но дважды или больше, нет.Как я мог это сделать?

Ответы [ 2 ]

2 голосов
/ 08 октября 2011

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

0 голосов
/ 08 октября 2011

просто добавьте блок do while вокруг readObject.В качестве условия прерывания вы можете проверить, является ли сообщение чем-то вроде «exit» ..

cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...