ai_socktype 不支持 Servname

Posted

技术标签:

【中文标题】ai_socktype 不支持 Servname【英文标题】:Servname not supported for ai_socktype 【发布时间】:2014-05-29 12:43:15 【问题描述】:

我正在使用 Vagrant 运行 Centos 虚拟机。机器似乎运行正常,但是当我尝试同步 Perforce 时,我可以看到以下错误:

[vagrant@vagrant-c5-x86_64 ~]$ /perforce/p4 sync -f ...  
Perforce client error:  
Connect to server failed; check $P4PORT.  
failed.TCP connect to perforce.xxx.com:1666  
Servname not supported for ai_socktype

我已阅读此http://www.ducea.com/2006/09/11/error-servname-not-supported-for-ai_socktype/ 并尝试在/etc/services 中设置端口,但没有成功。我什至不确定问题是否与 Perforce 或操作系统有关。

有什么提示吗?

【问题讨论】:

P4PORT 设置正确了吗? 是的,这是我的第一个猜测。从一开始就正确设置。另外,我将 P4CHARSET 更改为“utf8”和“none”。目前还没有结果... “telnet perforce.xxx.com 1666”有效吗? (即建立连接) 它确实有效。机器可以互相看到。 请参阅***.com/questions/43600239/… 以获取类似问题的答案,尽管在这种情况下答案涉及 Perl 脚本中的语法错误。不过,也许它为这个问题的答案提供了线索。 【参考方案1】:

我在使用 Tornado/Python 应用时遇到了这个问题。显然,this can be caused 被端口解释为字符串而不是整数。因此,就我而言,我需要更改我的启动脚本以强制将其解释为整数。

application = tornado.web.Application(...)
application.listen(int(port))

【讨论】:

完全不同的库(Kafka-Python),但这解决了我的问题!谢谢【参考方案2】:

你能进入你的客户吗?在尝试同步文件之前,尝试创建一个 perforce 客户端:

p4 client

也许问题不是host:port,而是连接字符串中的其他标志中断。

我个人收到了完全相同的错误,但这是 Perforce 问题。

原因是,Perforce 在寻找其P4USER/P4PORT/... 配置时有自己的优先级。

    ENV 变量(运行 export) 如果在某处指定了 P4CONFIG 变量,它可以在文件中搜索(如当前/上层目录中的 .perforce

问题是,即使它首先搜索 ENV 变量 - P4CONFIG 文件可能会覆盖它。

所以我的$P4PORT ENV 变量有一个连接字符串 X,但 .perforce 文件有一个连接字符串 Y。

从我的本地 .perforce 文件中删除 P4PORT - 解决了这个问题。 例如:

$~] echo $P4PORT; 
rsh:ssh -2 -q -a -x -l p4ssh perforce.mydomain.com

$~] cat .perforce
# P4PORT="rsh:ssh -q -a -x -l perforce.mydomain.com /bin/true"
P4USER="my_user"

还请记住,Perforce 将在整个目录层次结构中向上搜索 $P4CONFIG 文件(如果配置了一个),因此即使您在当前目录中没有该文件 - 它也可能在上层目录中找到, 在那里 - 你可能有一个你没想到的 $P4PORT 配置..

【讨论】:

【参考方案3】:

加上斜线,例如:

http://perforce.xxx.com:1666/

代替:

http://perforce.xxx.com:1666

【讨论】:

以上是关于ai_socktype 不支持 Servname的主要内容,如果未能解决你的问题,请参考以下文章

运用 getaddrinfo()函数的简单服务器实现

text ssh:无法解析主机名gitlab.devops:提供的nodename或servname,或者未知

nodename nor servname provided, or not known

Rails 4: Carrierwave/AWS - Excon::Errors::SocketError / getaddrinfo: nodename or servname provided

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename or servname provided,

在说 smtp.start 时获取“`initialize': getaddrinfo: nodename nor servname provided, or not known (SocketErr