为 Smack 的本地 bytestream 代理预留端口
当 Smack 客户端与 XMPP 代理服务共用一台开发机时,选择一个本地 SOCKS5 监听端口。
当 Smack 客户端和 XMPP 服务器运行在同一台开发机上时,它们的 bytestream 服务需要有意识地确定本地端口的归属。在打开本地监听器时、尝试远程文件传输之前,会出现“Address already in use”失败。
Smack 文档记载的默认本地 SOCKS5 端口是 7777。确认哪个进程已占用预期地址和端口。如果那是其他客户端仍需要的服务器端代理,请为该客户端另留一个端口,而不是停用服务器服务。
文档记载的 Socks5Proxy API 提供 setLocalSocks5ProxyPort(int)。负值表示以其绝对值为起点向上继续查找。在允许这种选择时,读取实际监听的端口,并在启动监听器之前完成配置。
客户端所通告的端口必须对预期要连接的参与方保持可达。选择未使用的端口只解决了归属问题;它并不会打通经过 NAT 或防火墙的路由。