我在AsyncTask中运行以下代码:
socket = new Socket(host, Integer.parseInt(port));
如果主机名正确,但在端口上没有套接字服务器正在监听,那么这行代码可能会在抛出异常之前工作几分钟。我能设置通信超时吗?另外,是否可以停止此过程 - 目前它不响应AsyncTask.cancel调用。
我在AsyncTask中运行以下代码:
socket = new Socket(host, Integer.parseInt(port));
如果主机名正确,但在端口上没有套接字服务器正在监听,那么这行代码可能会在抛出异常之前工作几分钟。我能设置通信超时吗?另外,是否可以停止此过程 - 目前它不响应AsyncTask.cancel调用。
使用无参数构造函数创建套接字,如下所示:
socket = new Socket();
socket.connect(remoteAddress, timeout);
您需要先创建一个套接字,然后在其中使用以下方法。
Socket client=new Socket();
client.connect(new InetSocketAddress(hostip,port_num),connection_time_out);
Socket soc = null;
while(soc == null){
try{
soc = new Socket("x.x.x.x", portNumber);
}
catch(Exception ex){
}
}
自从:
socket.connect(remoteAddress, timeout)
众所周知,它不可靠,你可以编写自己的超时版本。我编写的代码无限等待连接,但你可以非常容易地引入一个计时器。