давайте разберемся с неправильным представлением ... сокеты ПОЛНОСТЬЮ-ДУПЛЕКС: вы подключаетесь к серверу, используя один порт, затем вы можете отправлять и получать данные через один и тот же сокет, нет необходимости в двух номерах портов. (фактически, порт для назначения данных назначен, но он: 1. назначается автоматически при создании сокета (если не указано иное) и 2. не используется в вызовах функций для получения данных)
поэтому вы говорите нам, что в вашей документации есть 2 номера портов ... я предполагаю, что "сервер" - это уже существующее внутреннее приложение, и вы пытаетесь с ним поговорить. если в документе указаны 2 порта, то вам понадобятся 2 сокета: один для отправки и другой для получения. Теперь я рекомендую вам сначала использовать синхронный сокет, прежде чем пытаться использовать асинхронный способ: синхронный сокет менее подвержен ошибкам для первого теста.
(кстати, давайте разберемся с другим заблуждением: при правильном кодировании, когда сервер прослушивает порт, он может принимать любое количество соединений через один и тот же номер порта, нет необходимости открывать 2 прослушивающих порта, чтобы принимать 2 соединения. .. извините за повторное выравнивание, но я видел эти 2 ошибки, совершенные достаточно времени, это побуждает меня убивать)