2017-06-30 8 views
0

私はPythonを使用して小さなLANチャットを作成していますが、何らかの理由で接続が拒否され続けています。ここで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ステータス冗長出力です:

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が重要です。同じマシンから接続/テストしていない場合は、localhostにバインドしないでください。 – Peri461

+0

127.0.0.1がオンになっているときは、彼自身からの接続のみを受け付けますか? @DeepSpace – DiogoF

+0

@DiogoFはい、私の答えと私がリンクしている質問を見てください。 – DeepSpace

答えて

2

server.pyの場合、host = '127.0.0.1'host = '0.0.0.0'に変更してください。 127.0.0.1でリッスンすると、localhostからの接続のみが許可されます。詳細については、What is the difference between 0.0.0.0, 127.0.0.1 and localhost?を参照してください。

+0

ありがとう、私はすぐにGoogleで "127.0.0.1対0.0.0.0"を検索し、説明を見つけた、違いを知らなかった。 – DiogoF

関連する問題