2017-06-30 50 views
0

我使用python创建了一个小型局域网聊天,并且出于某种原因,我一直拒绝我的连接。以下是错误:Python - 连接不断被拒绝

File "client.py", line 35, in data, addr = s.recvfrom(1024) ConnectionRefusedError: [Errno 111] Connection refused

这里是server.py代码:

import socket 
from time import sleep 

host = '127.0.0.1' 
port = 5000 
ips = [] 

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind((host, port)) 

print('server started') 

quitS = False 
while not quitS: 
    data, addr = s.recvfrom(1024) 
    if 'quitS' in str(data): 
     print('server will close in...') 
     for i in reversed(range(4)): 
      sleep(1) 
      print (i) 
     quitS = True 
     break 
    print (str(addr) + ': '+str(data)) 
    if addr not in ips: 
     ips.append(addr) 
    for ip in ips: 
     s.sendto(data, ip) 

s.close() 

而且我client.py:

import socket 
from time import sleep 
from getpass import getpass 

host = '192.168.1.126' 
port = 5000 

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.connect((host, port)) 

loop = True 
while loop: 
    try: 
     s.settimeout(4) 
     text = input('Type: ') 
     data = text.encode('UTF-8') 
     if text == 'quitS': 
      passwd = False 
      pcount = 0 
      while not passwd: 
       pcount += 1 
       pwd = getpass() 
       if pwd == '1234': 
        s.send(data) 
        passwd = True 
       elif pcount == 3: 
        print ('HHell no, go away') 
        break 
     elif text == 'q': 
      s.close() 
      break 
     elif text == '': 
      print('Inavalid, entry not allowed.') 
     else: 
      s.send(data) 
      data, addr = s.recvfrom(1024) 
      print (str(addr) + ': ' + str(data)) 
    except (socket.timeout, ConnectionResetError): 
     loop = False 
     sleep(2) 
     print('Server is dead, will close in...') 
     for i in reversed(range(4)): 
      sleep(1) 
      print (i) 

的server.py是我的RPI运行,他是我的ufw status verbose输出:

5000      ALLOW IN Anywhere 
6001      ALLOW IN Anywhere 
5001      ALLOW IN Anywhere 
22       ALLOW IN Anywhere 
5900      ALLOW IN Anywhere 
5800      ALLOW IN Anywhere 
5000      ALLOW IN Anywhere (v6) 
6001      ALLOW IN Anywhere (v6) 
5001      ALLOW IN Anywhere (v6) 
22       ALLOW IN Anywhere (v6) 
5900      ALLOW IN Anywhere (v6) 
5800      ALLOW IN Anywhere (v6) 

5000      ALLOW OUT Anywhere 
5000      ALLOW OUT Anywhere (v6) 

client.py ufw设置几乎相同,我允许在端口5000上进出。

我在做什么错?并且,如果您对代码有任何建议,请告诉我!

+0

像@DeepSpace提到的那样,主机和客户端IP在这里很重要。如果您没有从同一台机器连接/测试,请不要绑定到本地主机。 – Peri461

+0

所以当127.0.0.1打开时,它只会让他自己的连接? @DeepSpace – DiogoF

+0

@DiogoF是的,请参阅我的回答以及我链接的问题。 – DeepSpace

回答