socket.gaierror: [Errno 8] nodename nor servname provided, or not known

把查到的几个文章贴一下,做个记录:

1.

报错内容:
socket.gaierror: [Errno 8] nodename nor servname provided, or not known

原因:
hostname 没有写在/etc/hosts里。例如上面异常信息中的MAC-20150101这个东西,其实是我们的Mac系统的主机名称,有些代码里面可能需要根据主机名称来去本地的DNS里找对应的IP地址,由于本地的DNS配置中没有指定主机名这个IP地址是什么,也就会提示这个错误了。

解决方法:
在python解释器中实现:

python

调用Socket库提供的gethostname()方法获取主机名

>>>import socket
>>>socket.gethostname()
>>>>exit()

获取主机名,修改hosts文件,输入命令

vim /etc/hosts

加入主机名 127.0.0.1 hostname

错误解决
 

2. Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法

原文链接:https://blog.csdn.net/longyuhome/article/details/50674442

今天在Mac系统上启动Java Web项目的时候,提示了java.net.UnknownHostException: MAC-20150101 nodename nor servname provided类似的错误,然而同样的项目在windows的环境下是可以正常启动运行的。然后在网上找到了解决办法,虽然是英文的,但是根据说的做法,确实可以解决这个问题。现在将这个问题的解决办法分享给大家。
首先看下异常的提示信息:

java.net.UnknownHostException: MAC-20150101: MAC-20150101: nodename nor servname provided, or not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
at org.eclipse.rse.core.RSECorePlugin.getLocalMachineName(RSECorePlugin.java:265)
at org.eclipse.rse.core.RSEPreferencesManager.getDefaultPrivateSystemProfileName(RSEPreferencesManager.java:358)
at org.eclipse.rse.core.RSEPreferencesManager.initDefaults(RSEPreferencesManager.java:337)
at org.eclipse.rse.internal.core.RSEPreferenceInitializer.initializeDefaultPreferences(RSEPreferenceInitializer.java:23)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:300)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
....
....
....
Caused by: java.net.UnknownHostException: MAC-20150101: nodename nor servname provided, or not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
... 28 more

关于异常信息中的MAC-20150101这个东西,其实是我们的Mac系统的主机名称,有些代码里面可能需要根据主机名称来去本地的DNS里找对应的IP地址,由于本地的DNS配置中没有指定主机名这个IP地址是什么,也就会提示这个错误了。

解决办法非常的简单:

1)打开Mac系统上的终端,查看查看当前主机DNS的配置,输入命令cat /private/etc/hosts,如图所示:

2)然后编辑主机配置,增加主机名的映射,输入命令sudo vi /private/etc/hosts,进入VI编辑器,增加如下的映射

127.0.0.1  MAC-20150101

退出保存即可。

3)最后,在终端中输入刷新的命令dscacheutil -flushcache

经过了三个步骤之后,启动Java Web项目的时候,就不会出现如下的错误信息。

之所以会出现这个错误,网上说是项目中有地方调用如下的代码:

InetAddress.getLocalHost().getCanonicalHostName(); 

说是这个方法会返回FQDN (Fully Qualified Domain Name),如果没有配置主机名,那么调用了这段代码会抛出异常信息,而这个方法依赖于底层的操作系统,Mac系统的配置和Windows有些不同!

参考资料:

资料1:http://crunchify.com/getting-java-net-unknownhostexception-nodename-nor-servname-provided-or-not-known-error-on-mac-os-x-update-your-privateetchosts-file/
 

3.配置远程服务器Jupyter notebook时socket.gaierror: [Errno -2] Name or service not known错误解决方法

修改jupyter_notebook_config.py配置文件,输入命令:

vim ~/.jupyter/jupyter_notebook_config.py

在该配置文件中,搜索c.NotebookApp.ip,找到这句话然后修改为c.NotebookApp.ip=‘0.0.0.0’(一般教程会写修改为’*’),保存重启notebook即可。

## The IP address the notebook server will listen on.
c.NotebookApp.ip = '*'
c.NotebookApp.allow_remote_access=True

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值