ai_socktype不支持的服务名称

时间:2014-04-15 09:00:37

标签: sockets centos ip port perforce

我正在使用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还是OS相关。

任何提示?

3 个答案:

答案 0 :(得分:11)

我在Tornado / Python应用程序中遇到此问题。显然,端口this can be caused被解释为字符串而不是整数。所以在我的情况下,我需要更改我的启动脚本以强制它被解释为整数。

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

答案 1 :(得分:2)

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

p4 client

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

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

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

  1. ENV变量(运行export
  2. 如果在某处指定了P4CONFIG变量,它可以在文件中搜索(如当前/上层目录中的.perforce
  3. 问题是,即使它首先搜索ENV变量 - P4CONFIG文件可能会覆盖它。

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

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

    $~] 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配置,你没有预料到..

答案 2 :(得分:0)

添加斜杠,例如:

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

代替:

http://perforce.xxx.com:1666