Когда клиент Smack и сервер XMPP работают на одной машине разработки, их bytestream-службам требуется осознанное локальное владение портом. Ошибка «Address already in use» возникает при открытии локального слушателя, ещё до попытки удалённой передачи файла.

Задокументированный порт локального SOCKS5 по умолчанию в Smack — 7777. Проверьте, какой процесс уже занимает нужный адрес и порт. Если это серверный прокси, который всё ещё нужен другим клиентам, зарезервируйте для клиента другой порт, а не отключайте серверную службу.

У задокументированного API Socks5Proxy есть setLocalSocks5ProxyPort(int). Отрицательное значение запрашивает поиск, который начинается с его абсолютного значения и продолжается вверх. Считайте фактический порт прослушивания, когда такой выбор разрешён, и настройте его до запуска слушателя.

Порт, который клиент объявляет, должен оставаться доступным для участника, от которого ожидается подключение. Выбор свободного порта исправляет владение; он не публикует маршрут через NAT или межсетевой экран.

Похожие статьи