这几天的 KeiSystem 更新

继1月25日发布了之后,将 KS 放到了花园上进行实验。但是实验中发现有几个地址看起来很合理的客户端无法连接。

后来在群里问了lan姐,她说:“你都是本机识别地址的么……”

现在的方案是这样的。于是采用了她提出的让接入点报告源客户端端点的方法,在客户端接入网络的时候读取源端点并告知连接来的客户端。

但是这样又出现问题了。这样理论上可以兼容通过路由器上网的用户(因为端点是外面告诉它的),但是实际测试中,直接连接到校园网的客户端无法向“理论上的”通过路由器连接校园网的客户端的“外在”端口发送消息。这就更蛋疼了。

查阅日志,发现这个地址和端口是动态的。怎么办?

想起当时还问了lan姐一个问题,为什么我们能直接使用 μTorrent 报告的端口,即使通过路由器连接?lan姐回答说:“UT的端口是用 UPNP 和路由器协商的。”嗯,那好,咬咬牙也干上 UPnP。找到了一个比较好的 UPnP 操作库,添加了 UPnP 功能,调试。基本上可以通过支持 UPnP 的路由器了。美中不足的是该库内部使用的是 COM,而不是用 socket 做 UDP 通讯这样的原生方式,所以跨平台比较麻烦。而且加入 UPnP 之后,和设备通讯的超时还要考虑在内。同时,现在的操作模型也要发生变化……能用是能用了,就是更复杂了,即使我已经尝试最大化地保留原有的框架。另外,有 UPnP 的规范在手,改日实现纯粹的原生 UPnP 支持……

原来25日说晚上应该能好(只想过连接点告知),到弄到现在还有这些限制,以及晚上如果有机会的话要进行三机调试(路由器-路由器直接传输),真是累死了。现在喉咙疼,发热,还不怎么想吃东西,作息也整个乱了……测试通过了之后才会往花园发布测试,然后才会上传代码,所以要等一下。初定是rev3(所以说rev2到rev3这个过程中间发生了多大的变化)。

啊村长你就过着光彩照人的生活吧……我没有你这么耀眼……

分享到 评论