Итак, для проекта я создаю небольшой одноранговый клиент чата для двух человек, использующий Java в среде IDE Netbeans.
Мой вопрос не совсем в коде, а больше о структуре и способах реализации.
Я хочу, чтобы клиент был открыт и ServerSocket
прослушивал любые соединения, которые пытаются установить от другого клиента, использующего Socket
(этот другой клиент также должен иметь ServerSocket
). Итак, идея состоит в том, что оба клиента имеют возможность принять соединение после открытия клиента и возможность попытаться установить соединение.
В любом случае, проблема в том, что ServerSocket.Accept();
блокирует (правильная терминология?) Программу после ее вызова до истечения тайм-аута. Я хочу, чтобы ServerSocket
просто слушал в фоновом режиме любые входящие соединения и подключал их, если это так, без полного отключения функции программы (то есть, чтобы пользователь мог сам инициировать соединение), пока это происходит? Для этого мне нужно создать отдельный поток для ServerSocket
, который будет уничтожен после установления соединения?
Кроме того, после установления соединения, как мне заставить программу периодически проверять входной поток Socket
, чтобы видеть, есть ли какие-либо входящие сообщения от другого клиента?
Есть ли способ добиться этого в одном потоке? (Я еще не особо углублялся в темы)
Прошу прощения, если это немного расширительно.
Огромное спасибо!!