0

我在这里遇到了一些麻烦,一方面我有一个服务器正在侦听端口 23000,另一方面我有一个作为客户端的 Android 应用程序。虽然使用典型的 10.2....IP 在模拟器(顺便说一下,这是为 2.3.3 构建的)中的连接似乎可以工作,但在尝试三星 Galaxy Tab 时,我继续获得著名的:

“协议异常不支持地址族”

最终,代码如下所示:

InetSocketAddress inetAddress;

        //this is done to keep backward compatibility prior 2.0.4 release
        if(host == null || host.equals("")) {
            //check if defaultIp is also empty
            if (defaultIPAddress == null || defaultIPAddress.equals(""))
                throw new UnknownHostException();
            //otherwise start listening on defaultIp
            else
            {
                inetAddress = new InetSocketAddress(defaultIPAddress, port);
            }
        }
        //start listening on host
        else
        {
            inetAddress = new InetSocketAddress(host, port);
        }

        // open the socket channel
        this.channel = SocketChannel.open(inetAddress);
        this.channel.configureBlocking(false);
        this.channel.socket().setTcpNoDelay(true);

尝试打开套接字时失败

this.channel = SocketChannel.open(inetAddress);

不用说,我在我的清单中拥有所需的权限,如前所述,这在模拟器中运行良好。

此外,这不是网络问题,两台机器都连接到使用我手头的路由器创建的无线 Wifi,没有防火墙,代理,完全打开,这样说......

有任何想法吗?

谢谢!亚历克斯

4

1 回答 1

0

如果有人遇到这个问题并且遇到同样的问题,这是因为我试图在主 Activity 的同一个线程中打开 Socket。看起来这是a)不建议和b)不再允许。因此,将您的连接代码移动到一个单独的线程,您应该是安全的。

于 2013-03-14T15:52:56.083 回答