Проблема такая. Создал значит я локальный чат на Python где есть программа-клиент, и программа-сервер.
Клиент:
Сервер:
При запуске нескольких клиентов и сервера на одном компьтере, все работает замечательно.
Но при запуске клиента на другом устройстве, выдаёт ошибку:
Tracebak (most recent call last):
File "client.py", line 51, in <module>
s.sendto(("["+alias + "] => Присоеденился к чату ").encode("utf-8"),server)
OSError: [Errno 22] Invalid argument
Помогите чем сможете, спасибо.
Клиент:
Python:
import socket, threading, time
import dns.resolver
key = 8194
shutdown = False
join = False
servak = input('Введите IP сервака: ')
def receving (name, sock):
while not shutdown:
try:
while True:
data, addr = sock.recvfrom(1024)
#
decrypt = ""; k = False
for i in data.decode("utf-8"):
if i == ":":
k = True
decrypt += i
elif k == False or i == " ":
decrypt += i
else:
decrypt += chr(ord(i)^key)
print(decrypt)
#
time.sleep(0.2)
except:
pass
host = socket.gethostbyname(socket.gethostname())
port = 0
server = (servak,9090)
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))
s.setblocking(0)
alias = input("Ваш ник: ")
rT = threading.Thread(target = receving, args = ("RecvThread",s))
rT.start()
while shutdown == False:
if join == False:
s.sendto(("["+alias + "] => Присоеденился к чату ").encode("utf-8"),server)
join = True
else:
try:
message = input()
#
crypt = ""
for i in message:
crypt += chr(ord(i)^key)
message = crypt
#
if message != "":
s.sendto(("["+alias + "] :: "+message).encode("utf-8"),server)
time.sleep(0.2)
except:
s.sendto(("["+alias + "] <= Покинул чат ").encode("utf-8"),server)
shutdown = True
rT.join()
s.close()
Python:
import socket, time
import dns.resolver
host = socket.gethostbyname(socket.gethostname())
port = 9090
clients = []
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))
quit = False
print("[ Запущен Сервак ]")
print('ip: '+host)
while not quit:
try:
data, addr = s.recvfrom(1024)
if addr not in clients:
clients.append(addr)
itsatime = time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime())
print("["+addr[0]+"]=["+str(addr[1])+"]=["+itsatime+"]/",end="")
print(data.decode("utf-8"))
for client in clients:
if addr != client:
s.sendto(data,client)
except:
print("\n[ Сервак Отключен ]")
quit = True
s.close()
Но при запуске клиента на другом устройстве, выдаёт ошибку:
Tracebak (most recent call last):
File "client.py", line 51, in <module>
s.sendto(("["+alias + "] => Присоеденился к чату ").encode("utf-8"),server)
OSError: [Errno 22] Invalid argument
Помогите чем сможете, спасибо.