这是我参与「第三届青训营 -后端场」笔记创作活动的的第 5 篇笔记
从开始做抖音项目就不断地在群里看到有人问为什么网络连接失败,鄙人这里尝试用浅薄的考研计网知识进行解读,希望能帮助到各位(本篇文章以本地调试为例,服务器测试相对简单,直接输入服务器地址即可)
简便实践
先说下我正在用的测试方法:Android Studio 随便开一个虚拟机,直接将抖声的 apk 拖拽到屏幕里即可完成安装,然后再输入电脑的 IP 即可连接到本地的服务器。注意以下两点:
- 抖声内的地址必须要打全(例如:
http://192.168.50.163,而不能是192.168.50.163否则会无限闪退,不知道现在修复了没有) - 即便你的安卓虚拟机运行在开启服务器的电脑里,服务器地址也不能用 127.0.0.1 即 localhost(环回自检地址),原因是虚拟机虽然和主机处于同一子网中,但虚拟机自身处于一个单独的子网,127.0.0.1 只会返回到自身而不会返回到主机。因此这里的服务器地址填写主机在子网中的地址,Windows 下可以通过 ipconfig 查到,我这里是 192.168.50.163
真机测试
对于以下两种情况,可以按照跟上面同样的方法操作:
- 手机和电脑连接到同一路由器
- 手机给电脑开热点
而对于“电脑给手机开热点的情况”则比较复杂,因为此时电脑同时拥有两个 IP 地址且不处于同一子网中(例如我的情况是电脑连接路由器的 IP 地址为:192.168.50.163,而电脑作为热点的 IP 地址为:192.168.137.1,不妨称电脑在路由器中的子网为 A,作为热点的子网为 B),默认情况下程序只会监听来自子网 A 的请求,而我们的手机处于子网 B 中,无法向子网 A 发送数据,因此不建议在这种情况下测试,注意这种情况即使将电脑作为代理也没有用,因为代理的主机仍然处于子网 B 中