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

时间:2020-10-12 16:58:11

标签: python python-3.x sockets networking websocket

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

服务器端:

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"))

预先感谢您!!!!

0 个答案:

没有答案
相关问题