http是无状态的连接,不像socket可以有timeout的异常,因此在判断超时上一直比较困扰.
这段时间做j2me的一个小游戏.用到了http连接,学习了论坛上说的一种方法.
"声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。
你的连接线程中在连接之前置这个变量为false;
另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。" -----zhengyun
写了Timer类来实现.(学习国外一个网站上的写法)
class Timer extends Thread {
/** 每个多少毫秒检测一次 */
protected int m_rate = 100;
/** 超时时间长度毫秒计算 */
private int m_length;
/** 已经运行的时间 */
private int m_elapsed;
/**
* 构造函数
*
* @param length
* Length of time before timeout occurs
*/
public Timer(int length) {
// Assign to member variable
m_length = length;
// Set time elapsed
m_elapsed = 0;
}
/**
* 重新计时
*
*/
public synchronized void reset() {
m_elapsed = 0;
System.out.println("reset timer");
}
/**
* 故意设置为超时,可以在服务器有返回,但是错误返回的时候直接调用这个,当成超时处理
*
*/
public synchronized void setTimeOut()
{
m_elapsed = m_length+1;
}
/**
*/
public void run() {
// 循环
System.out.println("timer running");
for (;;) {
// Put the timer to sleep
try {
Thread.sleep(m_rate);
} catch (InterruptedException ioe) {
continue;
}
synchronized (this) {
// Increment time remaining
m_elapsed += m_rate;
// Check to see if the time has been exceeded
if (m_elapsed > m_length && !isConnActive) { //isConnActive 为全局变量
// Trigger a timeout
timeout();
break;
}
}
}
}
/**
* 超时时候的处理
*
*/
public void timeout() {
httpConnection = null;
System.out.println("conn time > " + TIME_OUT + " ms");
}
}
在http连接线程调用的同是调用 new Timer(20*1000).start();
需要重新计时时候调用timer.reset()
原文链接:http://www.techrss.cn/html/2008/11-22/175681.htm
分享到:
相关推荐
这篇博客"JAVA数据库连接大全-转载"可能详细介绍了在Java中如何管理和使用数据库连接,包括使用JDBC API,数据库连接池以及相关的工具。这里我们将深入探讨JDBC、数据库连接池的重要性和配置方法。 1. **JDBC基础**...
合理的设置最大连接数、最小连接数以及超时策略,避免因连接过多导致的系统瓶颈。 其次,**索引优化**对于提高查询效率至关重要。秒杀商品的库存信息需要频繁查询和更新,应确保这些关键字段有合适的索引。例如,...
- `-w [超时时间]`:设置每个跃点的超时时间。 4. **`ipconfig`** - **用途**:显示当前网络接口的信息。 - **语法**: - `ipconfig`:显示所有网络接口的基本信息。 - `ipconfig /all`:显示所有网络接口的...
在进行Linux系统管理或自动化任务部署时,经常需要使用SSH(Secure Shell)协议远程连接到其他服务器上执行命令或管理操作。出于安全考虑,SSH在连接远程主机时会要求输入密码,但在脚本自动化场景中,这种交互式...
带外管理是指通过控制台线缆或通过网络以外的通信方式进行管理,而带内管理则是通过网络连接,比如通过Telnet、HTTP等协议进行远程管理。管理界面中包括CLI(命令行界面)和Web界面,各有其配置模式和命令,以及对...
九、若您在官网中下载的网钛文章管理系统,发现有安全漏洞、后门、恶意代码,请告诉我们,我们会第一时间纠正。 十、如果您有什么建议或意义,也请告诉我们,一个完善的系统离不开大家的建议和意见。 欢迎使用网钛...
1、支持自定义文章的路径,使其他系统的数据转移到网钛文章管理系统中,文章路径可保持不变,不影响网站已被搜索引擎收录的数量和排名; 2、支持仿OK3W文章系统的路径 3、支持仿老Y文章系统的路径 4、...
4. **性能设置**: 如最大并发连接数、连接超时时间等。 5. **FTP服务扩展**: 可以启用或禁用FTP服务的特定功能,如FTP被动模式等。 #### 五、FTP客户端配置 ##### 5.1 FTP客户端软件选择 常见的FTP客户端软件包括...
这通常涉及到修改服务器配置文件、数据库连接参数等。 4. **CAS协议**: CAS支持多种协议,如CAS 1.0、CAS 2.0、CAS 3.0以及SAML等。其中,CAS 2.0及以上版本支持HTTPS,提高了安全性。理解这些协议的工作流程对于...
- ODBC连接类函数:`odbc_connect`、`odbc_close`、`odbc_close_all` 和 `odbc_pconnect` 用于建立和管理ODBC数据库连接。 - ODBC操作类函数:`odbc_commit` 提交事务,`odbc_do` 直接执行SQL,`odbc_exec` 执行非...
- **错误处理**:要处理可能出现的网络错误,如超时、无网络连接、解析错误等,提供友好的用户反馈。 - **数据缓存**:对于不经常变化的数据,可以考虑缓存策略,减少不必要的网络请求。 - **性能优化**:避免频繁...
连接机器的设置涉及到GOT网络号、站号、以太网设置、通讯用端口号、重试次数、启动时间、通讯超时时间、发送延迟时间等详细参数配置,以确保画面设计软件与GOT机器的通讯正常。 4. 画面规格与显示语言: 画面能够...
6. **异常处理与重试机制**:在爬虫过程中,可能会遇到各种网络问题,如超时、连接失败等。因此,合理的异常处理和重试机制是必要的,以确保在出现问题时能够恢复或者跳过。 7. **日志记录**:为了追踪爬虫运行状态...
3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动. 4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!! 但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这...
最后我们还需要在web.xml中加入spring的session过滤器,我个人理解这个过滤器的作用是告诉spring来接管对session管理与创建工作。 1 <!--session过滤器--> 2 3 <filter-name>springSessionRepositoryFilter 4 ...