Chinaunix

标题: libevent2 关闭socket前没有将缓冲区的数据发送完,而是直接关了 [打印本页]

作者: jd808    时间: 2015-01-21 15:18
标题: libevent2 关闭socket前没有将缓冲区的数据发送完,而是直接关了
这个要如何弄?在关闭socket得通知下对方为啥把他关了.
作者: wenlq    时间: 2015-01-21 15:38
看看 setsockopt :SO_LINGER 选项设置
作者: ilex    时间: 2015-01-21 16:37
不明白你的需求是啥,

如果是程序里面主动去关闭,
那你提前发一个消息给对方,等对方应答后,再关掉socket?
作者: yulihua49    时间: 2015-01-21 16:39
jd808 发表于 2015-01-21 15:18
这个要如何弄?在关闭socket得通知下对方为啥把他关了.

为什么要关?是客户端的还是服务器的?
作者: jd808    时间: 2015-01-21 17:02
可以了, 是这样的,当一个用户登陆服务器后,正常执行,如果相同一个用户从另外一个电脑登陆服务器,那么就需要吧之前登陆的哪个踢下来,在踢他下来的时候,要发送一条消息给他,说明有人用他的号在其他地方登陆
作者: jd808    时间: 2015-01-21 17:05
ilex 发表于 2015-01-21 16:37
不明白你的需求是啥,

如果是程序里面主动去关闭,
确定需要这么繁琐?是否可以判断数据是否从从缓存中写入socket,只要写入完成,管他收没收到(写入了,应该是可以收到的),就关了他.
作者: liuyeid    时间: 2015-02-03 22:53
socket并没有说close的时候要flush吧,这是文件的概念吧。如果缓冲中还有数据,这个时候close的话会字节发送reset进行暴力关闭,不会走正常的四次握手




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2