这次更新做的是减法,XTransmit 0.8.0 移除了自定义数据传输模块,移到另外一个工程去了。那个模块通常用于绕过前端页面直接向目标站点发送特定功能的数据包(如评论、点赞、阅读数等等),和主要功能交集不多,移除之后程序会变小。

It's about the network
XTransmit 0.8.0

不过这次更新也提供了一种外部程序使用国际线路的方式,XTransmit 添加了一个 HTTP 服务以向外部程序回应国际线路的本地接口,软件访问 http://127.0.0.1:44100 可以获得线路的本地接口信息,然后设置通讯代理让数据走国际线路。用浏览器打开也可以看到接口信息,如上图所示。向该地址发送 GET、POST 请求都可以,XTransmit 没有判定请求类型会直接回应数据,下面是 C# 参考代码

    static readonly HttpClient httpClient = new HttpClient
    {
        Timeout = TimeSpan.FromMilliseconds(1000),
    };

    HttpResponseMessage response = httpClient.GetAsync(new Uri("http://127.0.0.1:44100/")).Result;
    response.EnsureSuccessStatusCode();

    string responseBody = response.Content.ReadAsStringAsync().Result;
    string[] servers = responseBody.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

每次请求都会回应最新的数据,最后获得的 servers 即是本地代理接口,数组每项都是一条国际线路(有单独的 IP)。一般情况下只会返回一个接口,不过当“服务池”开启时会返回很多(上图即是开启时的数据),可以任意使用,XTransmit 会维护这些线路。

远端服务器连接性检测改进了测试方法,现在输出的响应时间是具有参考意义的。点击当前使用的服务器(如下图红框所示)即可对线路做连接性检测,程序会以本地设备发起请求为起点开始计时,到请求的内容传输到本地设备后停止计时,得出总的时间在界面底部显示。这和 ping 不一样,ping 的结果可以说明设备到远端服务器的网路是否畅通,但是远端服务器是否提供服务、负载情况、服务器之后的网络状况则不得而知。连接性检测类似于从在浏览器输入网址到看到页面的时间,包括网络状况、远端服务器、目标站点等都会对响应时间有影响。

It's about the network
连接性测试(毫秒),我这的网络差时间较长

因为连接性检测的时间较长,当列表里有 10+ 个服务器时检测可能要几分钟,所以批量连接性检测操作就取消了。不过批量获取服务器信息、ping 没有取消而且还添加了多选支持,鼠标滑动选择多个服务器或是按住 Ctrl 点选多个服务器,然后在右键菜单里就可以操作。

It's about the network
多选

此前服务器信息只用在了更新服务器名称(基于 IP 的地理位置),现在这个功能直接改为了“更新服务器名称”,功能上也没有打算在丰富服务器信息上做提升,取而代之的可能是丰富服务器连接性、延时等相关统计数据,我觉得引入神经网络让机器智能来选择线路是个不错的主意。

希望疫情早日散去,春暖花开。