0234睡到0825,今天是中元节。
昨天的游戏人多就捕获不到似乎不是因为游戏服务器改变,像是单纯的没有处理好包。因为识别到游戏服务器: 58.217.182.174:20474 -> 192.168.31.240:59431
,而之后服务器 192.168.31.240:59431 -> 58.217.182.174:20474 - 捕获数据包数: 1005
,服务器 192.168.31.240:59431 -> 58.217.182.174:20474 - 捕获数据包数: 1755
;说明客户端一直在往这个服务器发包。但却没有服务器来的包,反而服务器 58.217.183.115:5003 -> 192.168.31.240:50294 - 捕获数据包数: 59
像是服务器来的,却没能识别到。
不对,有服务器发来的包,我代码没记。。
人少的时候能很轻松的通过小包识别到服务器。
又试了,服务器 58.217.182.174:20457 -> 192.168.31.240:53396 - 捕获数据包数: 1787
,识别到的服务器捕获到的包有很多,但都没被处理到,为什么,总不会是py原因吧。
人多的时候FrameDown
也变成1秒1次;
看了看TCP分段处理然后解析包的逻辑,突然意识到我这个解析到一半就没法获取到怪物血量会不会是丢包,因为可能因为seq断了死循环在那里;会不会和winpcap和npcap有关。
WARNING: WinPcap is now deprecated (not maintained). Please use Npcap instead
。该升级了,
WinPcap/Npcap
有统计接口(pcap_stats
),能看到捕获丢包数量。
先试试。
因为用的Scapy
所以不方便直接recv, drop, ifdrop = pc.stats()
,那不试了,直接下Npcap吧。
- 卸载 WinPcap。
- 安装 Npcap(勾选 WinPcap API 兼容模式)。
- Python 的
scapy/pcapy
就会自动走 Npcap。
为什么WinPcap
可能丢包,TCP不是能保证到达吗。
丢的不是 TCP 协议里的数据,而是 抓包工具没抓到:
用了Npcap依然同样问题,我没招了。
|
|
这里可能因为packet_size==0
死循环。所以之前可能也没有丢包的问题。。
依然有self.tcp_next_seq in self.tcp_cache:
一直收不到的问题,打算写个线程监控停在一个seq过久就丢弃,问题是丢弃多少,只能丢弃所有吧,因为不知道下一个包的大小所以无法直接定位下下个包。
今晚星痕共鸣在公屏看到时装队,随手就进了,在经历过一次团队分崩离析后我又组建了新的团队;然而新的团队又在某人出货后再次分崩离析了;我也感受到了重复劳作的无聊与痛苦,去qq群中找了个自动刷时装的exe,结果windows不让用,还自动帮我删了;好在github上有类似项目,开心的拉下来使用了,效果还挺好,打算今后多挂挂了,再也不手动去刷了。