社区
网络编程
帖子详情
服务器如何知道客户端异常断开连接?
zero1977
2003-11-11 11:59:41
如果采用发测试包处理得话,因为不可能时刻都检测,
这样服务器知道客户端连接断开总有个延时,
怎么在很短时间内知道客户端连接断开了?
...全文
627
15
打赏
收藏
服务器如何知道客户端异常断开连接?
如果采用发测试包处理得话,因为不可能时刻都检测, 这样服务器知道客户端连接断开总有个延时, 怎么在很短时间内知道客户端连接断开了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sjdf
2003-12-02
打赏
举报
回复
如果这个问题很简单的话,那么对于防御SYN攻击早已有办法了。
现在有好办法么?
zoutaiqi
2003-12-02
打赏
举报
回复
自己设置定时器,每隔2s发个数据包测试对方是否还在线,然后做相应的处理,我就是这样做的,测试的效果还不错。
BlueEngine
2003-12-01
打赏
举报
回复
楼主,你可能早解决问题了,但是我还补充下吧,以方便后来的XDJM们,^_^
keepAlive并不能实时反映链路连接状况,可参考tcpip协议详解中关于tcp保活的论述.
windows2k的缺省keepalive时间为2小时,这是我试验得出的.如chenshijin(阿土)所言此值可通过注册表修改,但我不知道是哪个键值.
BlueEngine
2003-11-28
打赏
举报
回复
up.
to:chenshijin(阿土) :keep_alive设为true之后为什么还要改注册表啊,怎么改,你倒是说的明白点啊.
keep_alive机制是不是实时反映链路连接状况呢?
danfeng
2003-11-27
打赏
举报
回复
tcp可以保证在短时间内自动连接
williamxia8
2003-11-27
打赏
举报
回复
就使用心跳来检测吧,在某几个时间周期内得不到客户端的反馈信息,就认为客户端已经断开
danfeng
2003-11-26
打赏
举报
回复
如果是tcp 其中一方异常断开 另外一方send会返回错误
如果是udp 需要自己做确认机制 如果没有收到确认返回 则认为另一方异常断开
mingcedar
2003-11-26
打赏
举报
回复
我现在作的程序也遇到同样的问题。
如用发测试包的方法,测试时间设得长,会有延时。设得短,如果有很多客户相连(比如1000人),是不是会占用太多的服务器资源。
to:chenshijin(阿土) :怎样用SetSockOpt来设置keepalive属性,怎样修改注册表?能否说详细一些?
dxp
2003-11-26
打赏
举报
回复
直接看send,recv的返回值就行了吧,或者GetLastError
我顺便问一下,是不是网络意外断开后重新连接,非要重新connect才能继续传送数据啊?
connect开销比较大啊!
joinrry
2003-11-12
打赏
举报
回复
发测试包的方法不错啊,其实很多也是这样作的!
测试时间可以设置小一点啦!
zero1977
2003-11-12
打赏
举报
回复
都说了是异常断开,比如突然断电等,套接字是不会被关闭的
zero1977
2003-11-12
打赏
举报
回复
int iValue = 1;
setsockopt( sockfd, SOL_SOCKET, SO_KEEPALIVE, (char*)&iValue, sizeof(iValue) ) ;
用这个就可以吗? 该注册表什么?
突然断电,服务器也能知道吗???
chenshijin
2003-11-12
打赏
举报
回复
你在服务器端可以采用SetSockOpt来设置keepalive属性,同时修改注册表,这样出现客户端异常退出的时候,服务器端就能够知道,并且上报应用层
ljzcom
2003-11-11
打赏
举报
回复
UP
happyhuang
2003-11-11
打赏
举报
回复
客户端连接断开之后套接字会被关闭的,服务器可以通过检测套接字关闭之后的GetLastError()返回值来判断是否是客户端连接断开。
java nio 服务端如何
知道
客户端
断开连接
服务器
如何
知道
客户端
断开了呢?????? 比如我想
客户端
断开后,发送一些消息给其他的
客户端
,该怎么办呢 我是基于java nio来实现的逻辑代码。 在
客户端
断开后,我们来debug追踪一下我们的
服务器
程序代码的执行步骤: 1 : selectedKeys()会有一个请求,然后会执行读操作 ...
TCP
客户端
判断与服务端
断开连接
的几种方法
TCP
客户端
判断与服务端
断开连接
的几种方法 目前已知的几种方法 1.epoll(能够检测正常的
断开连接
,事件触发机制。优点是快速) 2.read方式检测 3.keeplive方式检测 4.自定义心跳包方式检测 5.getsockopt 1.epoll epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和
客户端
突然
断开连接
调用 fork() 后,父进程的所有文件描述符(包括 socket)会被 “复制” 给子进程 —— 父和子的 socket 指向同一个 “内核资源”(可以理解为 “共享同一个通信通道”),只有当 “所有指向这个资源的文件描述符都被关闭”,内核才会真正释放这个资源。
客户端
突然断开后,
服务器
的子进程会自动清理资源(关闭
客户端
套接字、退出子进程),父进程完全不受影响,继续等待新的
客户端
连接 —— 这就是多进程的好处:一个
客户端
的
异常
不会拖累整个
服务器
。代码里是怎么处理的?常见的可改选项有这些(实战中常用)。
java socket
客户端
断开连接
_java中判断socket
服务器
端是否
断开连接
最近在开发中遇到一个问题,就是如何判断远端
服务器
是否已经
断开连接
,如果断开那么需要重新连接。首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经
断开连接
。然后想到是否可以通过OutputStream发送...
java 断开tcp连接_处理TCP
客户端
断开连接
我有这个简单的
服务器
,接受
客户端
的TCP套接字连接 . 尝试连接的每个
客户端
都使用新的Socket获取自己的 TCPConnectionHandler 实例 . 我不明白我该如何处理
客户端
断开连接
. 这是我的 TCPConnectionHandler :@Overridepublic void run() {try {br = new BufferedReader(new InputStream...
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章