VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1332|回复: 8

[求助] 如何判断UDP的连接何时关闭

[复制链接]
12_avatar_middle
online_vip 发表于 2015-11-24 17:00:11 | 显示全部楼层 |阅读模式
30驿站币
小弟在此先把问题详细的描述一下:
        client和server通信,小弟把client的包全部截获,解析IP包得知其四元组,然后通过四元组小弟创建一个socket用于和服务器通信(对数据做了何种操作在此不再赘述)。换言之,我做的工作是:模拟充当服务器和client通信【读取客户端的数据】,模拟充当客户端和server交互数据【接收服务器的数据】。接下来问题来了, client和server的UDP通信,我如何知道client关闭了socket,然后在我的代码里执行close(socket)? 正常的通信是UDP没有连接,但是在此我却不得不执行close。因为我充当中间角色创建了大量的连接,若UDP的socket不释放,时间长了将会导致我 create 新的socket 错误 :errno=24,即进程文件描述符达到上限。在此跪求大牛不吝赐教。





上一篇:查找bmp文件中的mark
下一篇:我的项目报 fatal error C1010: 错误
12_avatar_middle
ico_lz  楼主| 发表于 2015-11-24 17:03:30 | 显示全部楼层
修改下:模拟充当服务器和client通信【读取客户端的数据,然后将其发送给server,对于server来说他是客户端】,模拟充当客户端和server交互数据【接收服务器的数据,然后发给client,对于client来说,他是服务器】
51_avatar_middle
online_admins 发表于 2015-11-24 17:13:56 | 显示全部楼层
可不可以这样,数据发过去之后,直接关闭socket,再发的话就再新建socket
70_avatar_middle
在线会员 发表于 2015-11-24 17:15:09 | 显示全部楼层
额,那么你为何不在关闭客户端的前一刻去通知服务端,我要关闭了,你定义一个关闭的消息,一旦服务端接收到这个消息,你就close这个套接字,不行么?
70_avatar_middle
在线会员 发表于 2015-11-24 17:18:34 | 显示全部楼层
好比我们正在聊着QQ,我们不知道对方是否什么时候离开,但是如果他/她离开之前跟你说一下:我要忙去了,你肯定就知道他/她就离开了~当然比喻不恰当,但是应该很好理解你的问题了~~~
12_avatar_middle
ico_lz  楼主| 发表于 2015-11-24 17:36:48 | 显示全部楼层
QSir 发表于 2015-11-24 17:18
好比我们正在聊着QQ,我们不知道对方是否什么时候离开,但是如果他/她离开之前跟你说一下:我要忙去了,你 ...

感谢您的回答,问题是我如何通过解析他的数据包来判断他要离开呢。 我是在client和server之间充当一个转发包的角色,不能控制真正客户端和服务端的数据。在下的语言表达能力太差,汗颜。。。
60_avatar_middle
在线会员 发表于 2015-11-24 17:45:18 | 显示全部楼层
既然封包都解析了,为啥不用HOOK?简单直接!
12_avatar_middle
ico_lz  楼主| 发表于 2015-11-25 09:25:07 | 显示全部楼层
hack888 发表于 2015-11-24 17:45
既然封包都解析了,为啥不用HOOK?简单直接!

大牛可不可以详细的说一下。不太懂如何判断UDP的连接何时关闭

ps:我获取的是IP包
60_avatar_middle
在线会员 发表于 2015-11-25 16:36:52 | 显示全部楼层
ice 发表于 2015-11-25 09:25
大牛可不可以详细的说一下。不太懂

ps:我获取的是IP包

sendto,recvfrom等这类socket HOOK充当中转站
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-19 20:08

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表