找不到协议 socket.getprotobyname [英] Protocol Not Found socket.getprotobyname

查看:60
本文介绍了找不到协议 socket.getprotobyname的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试连接到 rabbitMQ 服务器,但它在连接时一直失败,并出现 socket.error: protocol not found 错误.

I'm trying to connect to an rabbitMQ server but the it keeps failing on connection with a socket.error: protocol not found error.

In [1]: import pika

In [2]: pika.BlockingConnection(pika.ConnectionParameters('ip_of_server'))

错误输出为

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-2-7adc44418966> in <module>()
----> 1 pika.BlockingConnection(pika.ConnectionParameters('localhost')
      2 )

/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.pyc in __init__(self, parameters)
    105
    106         """
--> 107         super(BlockingConnection, self).__init__(parameters, None, False)
    108
    109     def add_on_close_callback(self, callback_method_unused):

/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.pyc in __init__(self, parameters, on_open_callback, on_open_error_callback, on_close_callback, ioloop, stop_ioloop_on_close)
     60                                              on_open_callback,
     61                                              on_open_error_callback,
---> 62                                              on_close_callback)
     63
     64     def add_timeout(self, deadline, callback_method):

/usr/lib/python2.7/dist-packages/pika/connection.pyc in __init__(self, parameters, on_open_callback, on_open_error_callback, on_close_callback)
    588         # Initialize the connection state and connect
    589         self._init_connection_state()
--> 590         self.connect()
    591
    592     def add_backpressure_callback(self, callback_method):

/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.pyc in connect(self)
    204         """
    205         self._set_connection_state(self.CONNECTION_INIT)
--> 206         if not self._adapter_connect():
    207             raise exceptions.AMQPConnectionError('Could not connect')
    208

/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.pyc in _adapter_connect(self)
    272         # Remove the default behavior for connection errors
    273         self.callbacks.remove(0, self.ON_CONNECTION_ERROR)
--> 274         if not super(BlockingConnection, self)._adapter_connect():
    275             raise exceptions.AMQPConnectionError(1)
    276         self.socket.settimeout(self.SOCKET_CONNECT_TIMEOUT)

/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.pyc in _adapter_connect(self)
    103         # Get the addresses for the socket, supporting IPv4 & IPv6
    104         sock_addrs = socket.getaddrinfo(self.params.host, self.params.port,
--> 105                             0, 0, socket.getprotobyname("tcp"))
    106
    107         # Iterate through each addr tuple trying to connect

error: protocol not found

我读到这个是因为它在 base_connection.pyc 中的 socket.getprotobyname 行上失败了.然后我尝试单独使用 socket.getprotobyname 并且我不断收到 error: protocol not found.它显然不能很好我的 TCP 连接.

I read this as it was failing on the socket.getprotobyname line in base_connection.pyc. I then tried to use socket.getprotobyname on it's own and I keep getting error: protocol not found. It obviously can't fine my TCP connection.

据我所知,它应该输出 6

From what I can tell, it should output 6

In [5]: import socket

In [6]: socket.getprotobyname('tcp')
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-6-3a85adf1710a> in <module>()
----> 1 socket.getprotobyname('tcp')

error: protocol not found

我使用的是 Ubuntu 14.04 和 python 2.7.6,我不知道如何解决这个错误.

I am using Ubuntu 14.04 and python 2.7.6 and I have no idea how to troubleshoot this error.

我已经阅读了一些关于/etc/protocols 文件的主题,但我似乎没有.这可能是问题吗?如果是这样,是否有我可以下载的通用文件或创建一个文件的方法?

I've read some threads about the /etc/protocols file, but I do not seem to have one. Can this be the problem? If so, is there a generic file I can download or a method to create one?

推荐答案

是的,您应该有一个 /etc/protocols 文件.它一定是被以某种方式删除了.它来自 netbase 包.

Yes, you should have a /etc/protocols file. It must have been deleted somehow. It comes from the netbase package.

这应该重新安装它:

sudo apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall netbase

(更多详情见 https://askubuntu.com/questions/66533/how-can-i-restore-configuration-files)

这篇关于找不到协议 socket.getprotobyname的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆