Мое понимание TCP в Java заключается в том, что, хотя вы можете многопоточно обрабатывать передачи данных в сокете, вы можете установить только одно соединение за раз. Это правда? Если нет, как бы вы реализовали сервер, который может одновременно устанавливать несколько соединений на одном и том же адресе и порту.Установление нескольких TCP-соединений одновременно
ie Если клиент должен был установить соединение с сервером, но подключается через очень нестабильную сеть, сервер должен дождаться завершения установления соединения, прежде чем сможет принять соединение от другого клиента ?
Стандартный шаблон для сервера - это то, что код прослушивает соединение, а затем, когда он его получает, он вилки нового потока. Новый поток взаимодействует с клиентом, а основной поток сервера возвращается и прослушивает другое соединение. Так я всегда видел это в Unix/Linux. Это не специфично для Java. Вероятно, это очень похоже на системы Windows, но я не помню, как это было сделано. – ajb
P.S. Я не знаю ответа на второй вопрос, но я предполагаю, что да, серверу придется подождать, пока одно соединение будет установлено (или оставлено) до принятия другого. Это функция базовой ОС и/или самого протокола TCP, и снова не имеет ничего общего с Java. – ajb
@ajb Основная ОС может отправлять пакеты одновременно нескольким получателям, поэтому одновременно инициирует несколько подключений. Были бы ужасные последствия для работы, если бы такое последовательное общение. – Kayaman