我正在编写一个连接到身份验证服务器的 Android 应用程序,以检索另一个运行单独服务器程序的 Android 设备的 IP 地址和端口。发送请求时,认证服务器发送正确的连接信息。问题在于客户端设备尝试连接到 Android 服务器时。客户端获得正确的信息并成功关闭以前的连接,但在尝试创建新连接时挂起。不会引发异常,但 UI 没有响应,并且设备最终会说应用程序没有响应。我有一个充当客户端设备的模拟器和一个充当服务器的实际电话。
这是它卡住的客户端代码部分:
Log.i("Socket", "About to open a new socket");
socketChannel = SocketChannel.open(new InetSocketAddress(ip, port));
socketChannel.configureBlocking(false);
socketChannel.register(selector, SelectionKey.OP_READ);
Log.i("Socket", "New socket created and registered");
ip 是一个String
包含服务器的 IP 地址。port 是服务器的端口号。我有两个电话来Log.i()
查找程序挂起的位置。第一个调用执行,但第二个没有。此代码段是否有任何原因会导致应用程序冻结?
如果需要,我可以发布更多代码,但我很确定问题出在上面提供的部分。