#java #sockets #server #request #client
#java #сокеты #сервер #запрос #клиент
Вопрос:
Следуя этой схеме, мне удалось подключить клиент к его серверу и отлично взаимодействовать :
Вопрос в том, можно ли позволить серверу сначала выполнить запрос первым? Если да, как я могу настроить клиента на ожидание вызова сервера?
Я сделал это (на стороне клиента) :
Socket serverSocket = new Socket(Network.serverInetAddress, Network.SERVICE_PORT);
while (!Thread.currentThread().isInterrupted()) {
ObjectInputStream objectInputStream = new ObjectInputStream(new BufferedInputStream(serverSocket.getInputStream()));
MessageContent messageContent = (MessageContent) objectInputStream.readObject();
Network.processMessage(messageContent);
}
serverSocket.close();
Но клиент не получил сообщение сервера, хотя я не видел никакой ошибки в журналах моего клиента или сервера.
Как я могу решить эту проблему и «транслировать» сообщение с сервера всем подключенным клиентам? Спасибо! 🙂
Комментарии:
1. Запрос? Вы хотите передачу данных или соединение? Если передача — просто сделайте
socket.read(...)
на стороне клиента — вам не нужноServerSocket
на клиенте. Если вы хотите, чтобы сервер инициировал соединение, тогда это уже не сервер, а клиент 🙂2. Спасибо @VictorSorokin, я не нашел метод чтения () сокета. Пожалуйста, каково точное имя?
3.
socket.getInputStream().read(...)
4. Спасибо @VictorSorokin :), ты мужчина.
Ответ №1:
Да, это возможно. Вы должны указать клиент, который должен ожидать сообщения сервера (вы можете сделать это с помощью команды чтения в сокете, потому что это блокирующая команда). На сервере единственное, что вам нужно сделать, это получить данные после того, как клиентское соединение примет.