【发布时间】:2014-09-24 07:36:46
【问题描述】:
我是 android 编程新手,我正在尝试将程序从标准 java 移植到 android。这个 java 应用程序包含套接字。当我移植程序时,如果我按下按钮太快,连接会被拒绝。我做了一个简单的测试程序。
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket mySocket = new Socket();
InetSocketAddress address = new InetSocketAddress("10.94.35.24", 5000);
mySocket.connect(address, 5000);
mySocket.shutdownOutput();
mySocket.shutdownInput();
mySocket.close();
Log.w("Socket", "Socket closed");
Socket mySocket2 = new Socket();
mySocket2.connect(address, 5000);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
我在这个 IP 和端口上启动并运行了一个服务器,我的程序在我计算机上的 java 应用程序上运行良好。但是在 android 上,程序在尝试连接到 mySocket2 时出现以下异常
java.net.ConnectException:无法连接到 /10.94.35.24(端口 5000)5000 毫秒后:isConnected 失败:ECONNREFUSED(连接 拒绝)
我的猜测是这与 android 操作系统的限制有关,但我希望不是。有谁知道我做错了什么或者可以确认套接字在 Android 中有这些限制?
【问题讨论】:
-
您不需要在关闭套接字之前调用那些关闭方法。关闭就足够了。
-
也试过了,在我的电脑上仍然可以,但在我的手机上不行。
-
这不是一个答案。这就是我将其作为评论发布的原因。