Я знаю, что это ошибка серверной части, где используется переменная s
, когда должна использоваться переменная conn
, но я сижу здесь 2 часа и не вижу ошибки. Ошибка: [WinError 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied
Мой код:
import socket
from _thread import *
server = '123.456.78.9'
port = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((server, port))
except socket.error as e:
str(e)
s.listen()
print("Waiting for connections, server has been started")
def threaded_client(conn):
reply = ""
conn.sendall(str.encode("[Server, Server]Mis:200:Connected"))
while True:
try:
data = conn.recv(2048)
reply = data.decode("utf-8")
if not data:
print("Disconnected from", addr[0])
break
print("Received: ", reply)
print("Sending: ", reply)
conn.sendall(str.encode(reply))
except:
break
print("Connection to", addr[0], "has been lost!")
conn.close()
while True:
conn, addr = s.accept()
banlist = open('bannedip.bipf')
if addr[0] in banlist.read():
conn.sendall(str.encode("[Server, Server]Err:401:Banned"))
conn.close()
print("Banned ip", addr[0], ", was disconnected as their ip (", addr[0], ") is listed in the ban file")
else:
print("Connected to:", addr[0])
start_new_thread(threaded_client, (conn,))```