ai_socktype不支持服务名称



我正在使用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或操作系统有关。

有什么提示吗?

我在使用Tornado/Python应用程序时遇到了这个问题。 显然,这可能是由于端口被解释为字符串而不是整数引起的。所以就我而言,我需要更改我的启动脚本以强制将其解释为整数。

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

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

p4 client

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

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

原因是,Perforce 在寻找其P4USER/P4PORT/...配置。

  1. 环境变量 ( 运行export (
  2. 如果在某处指定了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配置。

放置尾部斜杠,例如:

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

而不是:

http://perforce.xxx.com:1666

就我而言,我在 golang 语言中遇到了这样的错误,我将端口类型从字符串更改为 int 并且工作正常

最新更新