Python 无法将数据从客户端发送到服务器端

Python 无法将数据从客户端发送到服务器端,python,python-3.x,sockets,networking,websocket,Python,Python 3.x,Sockets,Networking,Websocket,我正在尝试使用python中的套接字编程进行选择性重复。但是,当我试图将错误的_帧发送到服务器端时,程序在服务器端卡住了。撤消更改后,程序运行正常,但当我在客户端代码中添加最后一行将数据发送到服务器端时,整个程序停止。代码如下: 服务器端: import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((socket.gethostname(), 1235)) s.listen(5) print("

我正在尝试使用python中的套接字编程进行选择性重复。但是,当我试图将错误的_帧发送到服务器端时,程序在服务器端卡住了。撤消更改后,程序运行正常,但当我在客户端代码中添加最后一行将数据发送到服务器端时,整个程序停止。代码如下:

服务器端:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1235))
s.listen(5)
print("Waiting for Connection")
data = [11, 20, 30, 40, 55, 33, 56, 22]
data_lenght = len(data)

while True:
     clientsocket, address = s.accept()
     print("Connection is established")
     clientsocket.send(str(data_lenght).encode("utf-8"))
     for i in data:
          clientsocket.send(str(i).encode("utf-8"))
     wrong_frame_pos = clientsocket.recv(1024)
     print(wrong_frame_pos.decode("utf-8"))
     clientsocket.close()
客户端:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1235))

received_data = []

lenght_data = s.recv(1)
lenght_data = int(lenght_data.decode("utf-8"))
print(f"the lenght of the stream is {lenght_data}")

while True:
    number = s.recv(2)
    if len(number) < 1:
        break
    number = float(number.decode("utf-8"))
    print(number)
    received_data.append(int(number))

received_data[3] = -1


for i in range(len(received_data)):
    print(f"the recieved frame is {received_data[i]}")
    if received_data[i] == -1:
        wrong_frame = i

s.send(str(wrong_frame).encode("utf-8"))
导入套接字
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((socket.gethostname(),1235))
接收的_数据=[]
长度数据=s.recv(1)
长度数据=int(长度数据解码(“utf-8”))
打印(f“流的长度为{lenght_data}”)
尽管如此:
编号=s.recv(2)
如果len(编号)<1:
打破
数字=浮点(数字解码(“utf-8”))
打印(数字)
接收到的_数据。追加(int(number))
接收到的_数据[3]=-1
对于范围内的i(len(接收的_数据)):
打印(f“接收帧为{接收数据[i]}”)
如果接收到_数据[i]=-1:
错误的_frame=i
s、 发送(str(错误的帧)。编码(“utf-8”))
提前谢谢你