Похоже, вы не понимаете, что Socket.connect () является асинхронным.Поэтому выполнение вашего цикла и изменение текста не делают то, что вы думаете, потому что вы не подключились в этом цикле.После вызова connect () он сразу возвращается, не ожидая подключения к хосту.Вы должны изменить текстовую область в обратном вызове connctHandler, потому что только в этот момент вы действительно подключены.То же самое относится и к вашей обработке ошибок.Вы, вероятно, не видите ответов, потому что серверы могут быть не включены или заняты, время ожидания и т. Д. Первым, кто возвращается, вероятно, является активный сервер, а другие не существуют, недоступны, ошибка сети, что угодно,В основном, их соединения будут ожидать более 30 секунд ожидания ответа.
В вашем вопросе отсутствует намерение.Чего вы пытаетесь достичь, потому что код делает то, что вы просили сделать.Почему вы делаете это, не ясно.
По сути, все это асинхронно, и ваш вывод не будет чистым, как это:
Connected to 1, here is what I sent to 1, here is 1 told me
Connect to 2, here is what I sent to host 2, here is what host 2 told me
Connect 3, etc.
Все это будет происходить параллельнои запросы и ответы будут возвращаться, поскольку каждый хост и сетевой ответ позволяют это.Так что все это будет объединено.Вы можете изменить свой код, чтобы сериализовать его, но вам придется цеплять вызовы connect () в конце ответов от последнего соединения внутри ваших обратных вызовов.Хитрее, но выполнимо.
Если вы пытаетесь установить соединение хотя бы с одним сервером, вам нужно сделать что-то вроде того, что я описываю.Попробуйте 1, если есть проблема, Попробуйте 2 и т. Д. Но вам придется инициировать следующий вызов connect () из обратных вызовов.Не синхронно, как вы написали.