XSocket是什么? java的nio的封装。

详情:

1. http://xsocket.sourceforge.net/core/apidocs/2_1/index.html

2. http://xsocket.org

开发中要解决的实际问题:如果客户端一定时间内没有操作,则踢客户端下线。

/**
* @author 9082046**@qq.com
*
*/ 方案一、
在启动时设置: IServer srv = new Server(Port, IHandler);
srv.setConnectionTimeoutMillis(Time_1_ms);// 设置最大连接时间。
srv.setIdleTimeoutMillis(Time_2_ms);// 设置最大空闲时间。 方案二、
在接受到连接时 和 在接受到数据时设置: public class XSocketHandler implements IDataHandler ,IConnectHandler ,IIdleTimeoutHandler ,IConnectionTimeoutHandler,IDisconnectHandler
{
public boolean onConnect(INonBlockingConnection nbc) throws IOException,
BufferUnderflowException, MaxReadSizeExceededException
{      nbc.setConnectionTimeoutMillis(Time_1_ms);// 为什么写两次、写两种函数? 目的: 1、举例函数的用法。 2、配合onData() 一定程度上阻止恶意客户端,如果在一定时间内通不过登录验证则会被超时处理。
 nbc.setIdleTimeoutMillis(Time_2_ms);
return true;
} public boolean onDisconnect(INonBlockingConnection nbc) throws IOException
{
return false;
} public boolean onData(INonBlockingConnection nbc) throws IOException,
BufferUnderflowException, ClosedChannelException,
MaxReadSizeExceededException
{
      nbc.setConnectionTimeoutMillis(Time_1_ms);  
      nbc.setIdleTimeoutMillis(Time_2_ms);
return true;
} public boolean onIdleTimeout(INonBlockingConnection nbc) throws IOException
{
return true;
} public boolean onConnectionTimeout(INonBlockingConnection nbc) throws IOException
{ return true;
} }

个人注:xsocket的最大空闲时间 和 个人原始理解存在差异,个人原始理解:从最后一次接收到client的数据开始计时, 实际XSocket的定义:从最后一次被使用开始计时,无论是接收到数据 或者 被用来发送数据

如果实际需求中是要求:从客户端最后一次发送数据开始计时,则推荐 在XSocketHandler类中的 IHandler的实现化中使用 setConnectionTimeoutMillis() 方法。

反面举例:世界聊天会使用socket发送数据影响 setIdleTimeoutMillis() 。

如有考虑不周,请指正,请轻喷。欢迎大家留言。

xsocket:空闲超时问题。的更多相关文章

  1. 新功能:Azure 负载平衡器的空闲超时现可配置了

    Yves Pitsch Azure 网络首席项目经理 我们很高兴地宣布,Azure负载平衡器现在可以为云服务和虚拟机提供可配置的 TCP空闲超时支持.要配置此功能,可以使用服务管理 API.Power ...

  2. MySQL:参数wait_timeout和interactive_timeout以及空闲超时的实现【转】

    一.参数意思 这里简单解释一下两个参数,含义如下: interactive_timeout:The number of seconds the server waits for activity on ...

  3. windows 空闲超时 非管理员如何破解

    windows 空闲超时 非管理员如何破解

  4. 解决IIS应用程序池DefaultAppPool关闭超时错误

    错误系统日志: 为应用程序池“DefaultAppPool”提供服务的进程关闭时间超过了限制.进程 ID 是“3060”. 有关更多信息,请参阅在http://go.microsoft.com/fwl ...

  5. MySQL超时配置

    connect_timeout:连接响应超时时间.服务器端在这个时间内如未连接成功,则会返回连接失败. wait_timeout:连接空闲超时时间.与服务器端无交互状态的连接,直到被服务器端强制关闭而 ...

  6. mysql里几个超时配置参数wait_timeout,net_read_timeout等

    以下这些配置项单位都是秒,在mysql命令行中可以使用show global variables like '变量名';可查询配置值. connect_timeout:连接响应超时时间.服务器端在这个 ...

  7. LVS持久化与超时时间问题分析

    前言 在上一篇文章<搭建DNS+LVS(keepAlived)+OpenResty服务器(Docker环境)>中,我搭建了dns+lvs+openresty+web集群:先来回顾一下架构图 ...

  8. mysql 连接超时的问题

    项目中用mycat做的分表分库,异步通知系统会连接mycat去查数据库数据,有时会抛异常提示mysql server has gone away.最初以为是mycat的问题,在修改了mycat的配置, ...

  9. IIS进程回收 空闲时Net线程未运行

    最近手上的项目,用的是asp.net mvc,后台有个线程在循环接收socket数据,本身在系统运行的时候访问页面没问题,但是发现没访问时,后台没有接收数据,后来知道了是IIS把线程回收了.解决方法如 ...

随机推荐

  1. ant design 中的 Select 组件常规写法

    1.代码 import { Select, Spin } from 'antd'; const Option = Select.Option; <Select allowClear showSe ...

  2. 〖Linux〗ltib的使用帮助

    scue@Link:/home/work/ltib$ ./ltib --help This script is used to manage the building of BSPs with com ...

  3. Python 函数的 return 是否是必须的?

    —— Python 函数的 return 是否是必须的? —— return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式.不带参数值的return语句返回None. 来看一段关于 r ...

  4. 用ping让对方电脑堵塞瘫痪

    用ping让对方电脑堵塞瘫痪2008-04-27 11:32 定义echo数据包大小. 在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小, 但有一个大小的 ...

  5. 常用RGB颜色表

      作者:张家珩2005-12-02 20:51分类:默认分类     R G B 值   R G B 值   R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF0 ...

  6. DataGridView 的单元格的边框、 网格线样式的设定

    1) DataGridView 的边框线样式的设定DataGridView 的边框线的样式是通过 DataGridView.BorderStyle 属性来设定的. BorderStyle 属性设定值是 ...

  7. 实现WinForm窗体的美化(借助第三方控件)

    在winform项目中,其实皮肤就是一个第三方的控件,名字是IrisSkin4.dll只要添加到你的工具箱里就可以和其它控件一样使用了 一.添加控件IrisSkin4.dll.方法: 先把IrisSk ...

  8. python 2/3 joblib.dump() 和 joblib.load()

    在python2中加载python3训练和保存的模型时出错: ValueErrorTraceback (most recent call last) --> 237 clf = joblib.l ...

  9. mark v1 SecurityConfig

    package cn.efunbox.cms.configuration; import cn.efunbox.afw.core.entity.ApiCode; import cn.efunbox.a ...

  10. atitit.MyEclipse10 中增加svn插件故障排除

    atitit.MyEclipse10 中增加svn插件故障排除 删除\configuration \org.eclipse.update 不行... 二. 在configuration下的config ...