Python 不允许数据发送?[WinError 10057]
我知道这是服务器上的一个错误,在使用Python 不允许数据发送?[WinError 10057],python,sockets,tcp,server,Python,Sockets,Tcp,Server,我知道这是服务器上的一个错误,在使用s变量时,应该使用conn变量,但我已经在这里坐了2个小时,看不到错误。错误:[WinError 10057]不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址 我的代码: 我知道了!根据其他人的[WinError 10057]问题,服务器拒绝使用某个sock变量。6个小时后,我决定检查我的客户机代码,结果是我首先在\uuuu init\uuu函数中将client变量声明为普通套接字。然后在myconne
s
变量时,应该使用conn
变量,但我已经在这里坐了2个小时,看不到错误。错误:[WinError 10057]不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址
我的代码:
我知道了!根据其他人的
[WinError 10057]
问题,服务器拒绝使用某个sock变量。6个小时后,我决定检查我的客户机代码,结果是我首先在\uuuu init\uuu
函数中将client
变量声明为普通套接字。然后在myconnect
函数中,获取此变量并将其修改为已连接变量(因此发送和接收函数在该函数中工作)。然后,我的send函数重新读取原始套接字(非连接)并使用它发送(失败)。因此,我做了非常复杂的等效版本(用服务器的话来说),执行conn,addr=s.accept()
然后使old_s=s
然后s=conn,然后愚蠢地重置conn=old_s。这是我能解释的最好的了。如果你一个字都不懂,我很抱歉。你说得对。你确定这是真的代码吗?注意,我建议你不应该向被禁止的IP发送任何东西。不要向他们泄露任何信息。只需关闭连接。请问这会导致什么泄漏?奇怪的是,这是我的代码,除了ipIt之外,直接复制和粘贴会泄露以下信息:(a)IP:端口存在,以及(b)您将其IP:端口识别为坏角色的IP:端口。这两条信息都可能对攻击者有用。别告诉他们胡说八道。
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,))```