Reputation: 15
Im creating a small LAN chat using python and for some reason i keep getting my connection refused. Here is the error:
File "client.py", line 35, in data, addr = s.recvfrom(1024) ConnectionRefusedError: [Errno 111] Connection refused
Here is the server.py code:
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()
And my 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)
The server.py is running on my RPi and his is my ufw status verbose output:
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)
The client.py ufw setup is pretty much the same, i have allowed in and out on port 5000.
What am i doing wrong? And also if you have suggestions for the code let me know!
Upvotes: 0
Views: 5890
Reputation: 81594
In server.py, change host = '127.0.0.1'
to host = '0.0.0.0'
. Listening on 127.0.0.1
will only allow connections from localhost. See What is the difference between 0.0.0.0, 127.0.0.1 and localhost? for deeper explanation.
Upvotes: 2