首页
社区
课程
招聘
网络数据包的延时发送和接受有思路吗?
发表于: 2013-6-21 10:05 6875

网络数据包的延时发送和接受有思路吗?

2013-6-21 10:05
6875
有一个问题
我的目的是实现网络数据包的延时发送的接受。

在R3进行HOOK

比如已经收到数据后,我延时30秒再让应用程序接收到,造成是网络延时了30S的假象。

客户机(发送请求动手脚,30以后再发送,但是不影响程序的接下来的运行)->数据传输->服务器
服务器->传输数据->(在客户机动手脚,30S以后再收到)客户机器

造成是由网络延时延迟30S的假象。

我想在RECV后休眠30S和send前休眠30S是不行的。这样会造成程序假死,并且一旦发送大量多次的数据程序肯定会崩溃掉。

不知道有没有人做过类似的功能。能给些思路或者想法吗??

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
将要发送的数据缓存起来,然后设置定时器,定时器到了后再读取缓存数据进行发送。
2013-6-21 10:36
0
雪    币: 43
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
中转一下就可以吧。用libev之类的写一个socket server,中间做一个转发,把消息做一个队列,再控制时间。用脚本就可以,python, php之类的。这部分linux下做很容易。

然后修改hosts将目标指向中转的socket server
2013-6-21 11:04
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
不能用sleep,这个是客户端崩掉的原因。

在socket的send,recv  API,做个Hook,把数据丢入一个缓冲池,主动控制数据的处理延时。这样Socket线程没有被挂起,不会因为网络阻塞数据太大而崩溃
2013-6-21 11:56
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
5
具体一些这里比如send 我HOOK了 数据放到缓冲池里了。马上我该返回send  OK还是SOCKET_ERROR?毕竟程序还是要处理send的返回啊。

send也许还好处理,时间到了我send

但是RECV时间 到了我怎么处理?怎样通知程序send的东西到了?

由于对SOCKET还不大熟悉,还望指点
2013-6-21 15:56
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
6
谢谢,你的意思是 本来是 A<->B 之间的传输,现在。使用一个HOOK ,转向请求以及SOCKET
然后通过C中转,在C这里缓存数据然后再发送和接受吧。A<->C<->B这个的确是一个好思路。谢谢
2013-6-21 16:02
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
7
思路是这样,但是具体细节还想要请教一下,不知道客户端使用什么通信模型的时候。
比如我HOOK到了 RECV得到了数据。我缓存起来,到了时间以后如何通知原程序说数据到了??
2013-6-21 16:03
0
雪    币: 13
活跃值: (392)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
用多线程
2013-6-21 17:30
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很明显,这里只是需要对发送数据进行流量控制,而接收不应该有延迟的,比如说我5秒才发送一个包,难道你接收也要延迟5秒才接收吗?没必要
2013-7-15 10:31
0
游客
登录 | 注册 方可回帖
返回
//