Python套接字编程中的Errno 111连接被拒绝

克里斯蒂安姆

我有两个python脚本:一个server.py和一个worker.py这应该是这样工作的:

- server.py listens on 5005
- workers are started and bind to random ports
- they send a message to the server with their port nr
- server adds the port to its list of known workers
- it does this for each worker

我遇到的问题是,在添加第一个工作程序并启动另一个工作程序之后,我在服务器端收到此错误:

Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "server.py", line 42, in listener
    if handle_join(data.split(',')[1:]) == 1:
  File "server.py", line 122, in handle_join
    s.connect(("",int(worker_ip_port[1])))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused

该应用程序已经增长了很多,所以我只在此处包括相关部分:server.py:

def handle_join(worker_ip_port):
# e.g. worker_ip_port = 127.0.0.1,55256
# 
#
    worker_ip_port = tuple(worker_ip_port)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        print "Trying to connect to {}".format(worker_ip_port)
        s.connect(("",int(worker_ip_port[1])))
    if worker_ip_port not in WORKERS:
        WORKERS.append(worker_ip_port)
        print '\t\tNew worker added on {}'.format(worker_ip_port)
        print '\t\tWORKERS: {}'.format(WORKERS)
                s.send('0'+SIGEND)
                s.close()
                return 0
    print '\t\tThat port is already in the worker list'
    s.send('1'+SIGEND)
    s.close()
    return 1

worker.py

def read_socket():
# binds socket, keeps listening
# once connection is accepted, loops over the socket buffer until the
# signal for transmission end
# then returns the data
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
   s.bind(("",WORKER_PORT))
   print "listening on {}".format(WORKER_PORT)
   while True:
           buffer = ''
           data = True
           s.listen(0)
           conn, addr = s.accept()
           print "accepted connection"
           while data:
                    data = conn.recv(BUFFER_SIZE)
                    # if the SIGNAL for end of packet is found in current packet
                    # add only up to that part
                    # close socket
                    # return data
                    if data.find(SIGEND) != -1:
                            buffer += data[:data.rfind(SIGEND)]
                            conn.close()
                            s.close()
                            return buffer
                    else:
                            buffer += data

注意:我已经尝试过Linux和Windows。我已阅读了该网站上的所有其他建议以及在Google上可以找到的所有内容。似乎都不起作用。

尝试将telnet连接到第二个工作者建立的连接:

Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

据我所知,SECOND worker没有从服务器获得任何连接。

netstat的输出也很有趣:

tcp        0      0 0.0.0.0:55271           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:5005          127.0.0.1:55271         TIME_WAIT

55271是SECOND工作者绑定到的端口;以下连接是用于将“我在这里”消息发送到服务器的连接;

tcp        0      0 0.0.0.0:55269           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:59240         127.0.0.1:55269         TIME_WAIT
tcp        0      0 127.0.0.1:5005          127.0.0.1:55269         TIME_WAIT

对于FIRST工人(此处为55269),我可以看到有两个连接。应该的。第一个从工作器到服务器,带有“ I AM HERE”。第二个是从服务器发给工作人员的,确认一切都很好,现在已经在工作人员列表中。

我正在使用多处理框架。那会是个问题吗?

克里斯蒂安姆

解决了。在server.py中添加了一个尝试,如下所示:

def handle_join(worker_ip_port):
    worker_ip_port = tuple(worker_ip_port)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        print "Trying to connect to {}".format(worker_ip_port)
        for i in range(3):
                try:
                        s.connect(("",int(worker_ip_port[1])))
                        if worker_ip_port not in WORKERS:
                                WORKERS.append(worker_ip_port)
                                print '\t\tNew worker added on {}'.format(worker_ip_port)
                                print '\t\tWORKERS: {}'.format(WORKERS)
                                s.send('0'+SIGEND)
                                s.close()
                                return 0
                except Exception as e:
                        pass
    print '\t\tThat port is already in the worker list'
        s.send('1'+SIGEND)
        s.close()
    return 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python套接字编程中的Errno 111连接被拒绝

来自分类Dev

无法连接到127.0.0.1:27017,原因:errno:111连接被拒绝

来自分类Dev

在ubuntu vmware中使用python拒绝errno 111连接

来自分类Dev

OpenSSL:套接字:连接被拒绝连接:errno = 111

来自分类Dev

如何解决Delphi 2007服务器与RAD XE7客户端之间的Indy套接字错误#111连接被拒绝?

来自分类Dev

套接字错误:[Errno 111]在Ubuntu上拒绝连接

来自分类Dev

Python 中的套接字编程错误:“组参数现在必须为 None”和“SocketErr Errno. 111”

来自分类Dev

与MongoDB errno 111的连接被拒绝

来自分类Dev

MongoDB:无法连接到127.0.0.1:27017,原因:errno:61连接被拒绝

来自分类Dev

Java套接字编程中的连接拒绝错误

来自分类Dev

Java套接字编程中的连接拒绝错误

来自分类Dev

一个AWS实例上的MongoDB,原因:errno:61连接被拒绝

来自分类Dev

一个AWS实例上的MongoDB,原因:errno:61连接被拒绝

来自分类Dev

Vnc 查看器错误:无法连接到套接字:CentOS 8 中的连接被拒绝 (111)

来自分类Dev

Pythonanywhere上的“ [[Errno 111]连接被拒绝”

来自分类Dev

Pythonanywhere上的“ [[Errno 111]连接被拒绝”

来自分类Dev

python套接字拒绝连接

来自分类Dev

C套接字编程通过同一连接发送多个发送和接收

来自分类Dev

错误:[Errno 111]在烧瓶-mail中拒绝连接

来自分类Dev

python:蓝牙错误:(111,'连接被拒绝')

来自分类Dev

如何在Python中处理套接字“连接被拒绝”异常?

来自分类Dev

套接字编程权限被拒绝

来自分类Dev

Errno 10060连接尝试失败

来自分类Dev

Errno 10060连接尝试失败

来自分类Dev

模拟器:连接到套接字'127.0.0.1:1970'时出错:111->连接被拒绝

来自分类Dev

vnc查看器错误:无法连接到套接字:连接被拒绝(111)

来自分类Dev

连接错误:Ubuntu中C语言的简单套接字编程

来自分类Dev

连接列表在C套接字编程中显示0.0.0.0

来自分类Dev

套接字编程连接错误

Related 相关文章

  1. 1

    Python套接字编程中的Errno 111连接被拒绝

  2. 2

    无法连接到127.0.0.1:27017,原因:errno:111连接被拒绝

  3. 3

    在ubuntu vmware中使用python拒绝errno 111连接

  4. 4

    OpenSSL:套接字:连接被拒绝连接:errno = 111

  5. 5

    如何解决Delphi 2007服务器与RAD XE7客户端之间的Indy套接字错误#111连接被拒绝?

  6. 6

    套接字错误:[Errno 111]在Ubuntu上拒绝连接

  7. 7

    Python 中的套接字编程错误:“组参数现在必须为 None”和“SocketErr Errno. 111”

  8. 8

    与MongoDB errno 111的连接被拒绝

  9. 9

    MongoDB:无法连接到127.0.0.1:27017,原因:errno:61连接被拒绝

  10. 10

    Java套接字编程中的连接拒绝错误

  11. 11

    Java套接字编程中的连接拒绝错误

  12. 12

    一个AWS实例上的MongoDB,原因:errno:61连接被拒绝

  13. 13

    一个AWS实例上的MongoDB,原因:errno:61连接被拒绝

  14. 14

    Vnc 查看器错误:无法连接到套接字:CentOS 8 中的连接被拒绝 (111)

  15. 15

    Pythonanywhere上的“ [[Errno 111]连接被拒绝”

  16. 16

    Pythonanywhere上的“ [[Errno 111]连接被拒绝”

  17. 17

    python套接字拒绝连接

  18. 18

    C套接字编程通过同一连接发送多个发送和接收

  19. 19

    错误:[Errno 111]在烧瓶-mail中拒绝连接

  20. 20

    python:蓝牙错误:(111,'连接被拒绝')

  21. 21

    如何在Python中处理套接字“连接被拒绝”异常?

  22. 22

    套接字编程权限被拒绝

  23. 23

    Errno 10060连接尝试失败

  24. 24

    Errno 10060连接尝试失败

  25. 25

    模拟器:连接到套接字'127.0.0.1:1970'时出错:111->连接被拒绝

  26. 26

    vnc查看器错误:无法连接到套接字:连接被拒绝(111)

  27. 27

    连接错误:Ubuntu中C语言的简单套接字编程

  28. 28

    连接列表在C套接字编程中显示0.0.0.0

  29. 29

    套接字编程连接错误

热门标签

归档