nodeJS踩坑-记本地地址127.0.0.1与0.0.0.0的区别

注:本文和Node.js本身关系不大,只是这个这个知识点由学习Node时候引出,主要是关于网络的一个小知识点

问题的提出

nodejs中创建web服务时,作为小白的我自然是跟着官网文档走起

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

然后很自然本地就可以用localhost或者127.0.0.1访问了。那我想用本机ip访问呢?那就再listen(192.168.1.10) listen(localhost)啥的吧?结果却不行。我再挂到服务器上想要通过ip访问?怎么也访问不成功。
开始觉得是不是端口问题,设置了半天云主机的防火墙啥的还是没有用。果然太年轻,一开始就把问题方向搞错了。

问题的基本解决

看看官网的文档有这么一句:

server.listen(port, [hostname], [backlog], [callback])#
Begin accepting connections on the specified port and hostname. If the hostname is omitted, the server will accept connections directed to any IPv4 address (INADDR_ANY).

意思就是说如果不填写主机名hostname字段,默认是监听INADDR_ANY,也就是任意的IPv4地址。
所以解决这个问题就很简单了直接listen(1337)或者listen(1337,'0.0.0.0')就可以了。
这个0.0.0.0也就是所谓的INADDR_ANY
问题是解决了可是这个知识点还要进一步理清。

127.0.0.1与0.0.0.0

127.0.0.1是一个回送地址,指本地机,一般用来测试使用。大家常用来ping 127.0.0.1来看本地ip/tcp正不正常,如能ping通即可正常使用。对于大多数习惯用localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件将localhost与127.0.0.1绑定在了一起。可以理解为本地主机的意思。
这个知识点应该是没有什么问题的。其实不只有127.0.0.1,127.x.x.x都是本机回送地址(Loopback Address),只不过在系统配置中把localhost和127.0.0.1做了绑定,我们习惯用它而已。那么这个INADDR_ANY又是什么呢?

(<a href="http://www.dztcsd.com/">资质代办</a>)

INADDR_ANY

这个也叫通配地址,也就是说它不单单指本机。
0.0.0.0/8可以表示本网络中的所有主机
0.0.0.0/32可以用作本机的源地址
0.0.0.0/8也可表示本网络上的某个特定主机
综合起来可以说0.0.0.0表示整个网络
忽然想起来上计算机网络课程的时候有个默认路由的设置:

在路由器配置中可用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

结论

在我们刚刚nodejs配置web服务的语境下。0.0.0.0可以表示所有可以访问的地址,也就是本机的所有IPv4地址。

基础知识还是要扎实掌握才好,不然不会为了这么一点东西而大费周章。也让我想起了在腾讯面试中被问起的TCP四次挥手过程,改日写博客详细记录。希望通过博客的点点滴滴助力我更扎实的成长。

关注 http://blog.kbiao.me/ 看一个预备役码农的成长手记!


作者: K_Biao 
  
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
<think>好的,我现在需要帮用户查看Appium v2.0.0-rc.2的启动日志、调试模式的信息,以及uiautomator2和xcuitest驱动和插件的相关信息。首先,用户提到了启动日志的位置,根据引用[1],Appium的日志可能存放在/tmp下的某个路径,但具体路径可能因安装方式不同而变化。用户可能需要知道如何通过命令行参数来指定日志位置或者直接查看默认路径。 然后是调试模式,通常Appium可以通过--log-level参数来设置日志级别,比如--log-level debug来启用详细日志输出。这需要提醒用户在启动Appium时加上这个参数,同时可能需要指导他们如何找到生成的日志文件。 接下来关于驱动程序和插件,用户提到了uiautomator2和xcuitest。Appium 2.0之后采用了插件架构,需要单独安装驱动。引用[2]和[3]提到了chromedriver的路径设置,这可能用户的问题相关,但用户的问题是关于uiautomator2和xcuitest的。需要说明如何查看已安装的驱动和插件,使用appium driver list和appium plugin list命令。 另外,用户可能需要知道如何安装这些驱动,比如使用appium driver install uiautomator2和appium driver install xcuitest。同时,启动时需要指定驱动,使用--driver参数。需要确保用户清楚这些步骤,并检查是否已正确安装。 最后,用户的问题可能涉及路径配置或版本兼容性问题,比如chromedriver的版本设备Chrome版本的匹配,这在引用[2]和[3]中提到了chromedriver的路径设置,需要提醒用户注意版本匹配,避免出现兼容性问题。 总结回答的结构应该是分步骤说明如何启用调试日志、如何查看驱动和插件信息,以及相关的注意事项,如路径和版本问题。同时,引用提供的参考信息来支持回答的正确性。</think>### 查看Appium v2.0.0-rc.2启动日志及驱动信息 #### 1. **启动日志查看** - **调试模式启动** 通过命令行添加`--log-level debug`参数启动Appium,可输出详细日志: ```bash appium --log-level debug ``` 日志默认路径为`/tmp/appium.log`[^1],但具体路径可能因安装方式不同而变化。 - **日志路径自定义** 使用`--log`参数指定日志文件路径: ```bash appium --log /path/to/custom.log ``` #### 2. **驱动插件信息** - **查看已安装驱动** 执行命令列出所有已安装的驱动: ```bash appium driver list ``` 输出示例: ``` ✔ uiautomator2@2.29.3 ✔ xcuitest@4.9.0 ``` - **查看已安装插件** 执行命令列出所有插件: ```bash appium plugin list ``` #### 3. **指定驱动启动** - **Android (uiautomator2)** 启动时需显式指定驱动: ```bash appium --driver uiautomator2 ``` - **iOS (xcuitest)** 启动命令: ```bash appium --driver xcuitest ``` #### 4. **关键依赖路径** - **chromedriver路径** 若使用WebView测试,需确保`chromedriver`路径正确配置。例如: ``` chromedriver路径示例:/opt/nodejs/lib/node_modules/macaca-chrome/.../chromedriver[^3] ``` 需在Appium配置中指定`chromedriverExecutable`参数[^2]。 #### 5. **常见问题** - **日志权限问题** 若日志写入失败,检查`/tmp/`目录权限或改用用户目录路径。 - **驱动未安装** 通过命令安装缺失驱动: ```bash appium driver install uiautomator2 appium driver install xcuitest ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值