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. UNIX环境编程初步认识——编程环境搭建

     前言 前期学习了Linux的一些基本知识后,在借助前期的学习的基础上想再初步认识一下操作系统的一些环境编程体系相关知识,当中环境的配置和搭建费了非常大的劲,须要一点点摸索和尝试,下边是环境搭建的 ...

  2. 05-maven学习-构建web项目

    1,新增maven项目 然后输入相应包名,项目名,创建如下项目 发现以上有报错,需要进行如下操作: 下面文章转载自:http://blog.csdn.net/zhshulin/article/deta ...

  3. Flume日志收集系统介绍

    转自:http://blog.csdn.net/a2011480169/article/details/51544664 在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Ha ...

  4. MySQL —— 如何快速对比数据?

    我们在MySql中想要对比下两个不同的实例上的数据并且找出差异,除了主键之外我们还要对比每一个字段,应该怎么做呢? 方案一:写一个程序将两个实例里面的每一行数据都分别取出来对比,但是耗时我们无法估计, ...

  5. Discuz管理员前台正常后台登录不进如何解决

    Discuz管理员前台可以登录后台无法登录的解决方法步骤如下 1. 取消ip认证 config_global.php 中找到 $_config['admincp']['checkip'] = 0 2. ...

  6. android的NDK和java进行本地socket通信

    关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作者只贴 ...

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

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

  8. 百度MIP(百度版的google AMP)了解一下?

    官网:https://www.mipengine.org/ 视频教学:http://bit.baidu.com/subject/datalist/sid/10/cid/22.html github:h ...

  9. Python 爬虫实例(2)—— 爬取今日头条

    # coding:utf-8 import base64 import random, re import sqlite3 import redis, pickle import json, time ...

  10. Spring Cloud(八):分布式配置中心服务化和高可用

    在前两篇的介绍中,客户端都是直接调用配置中心的server端来获取配置文件信息.这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,serve ...