Я написал простую клиент-серверную эхо-программу, которая выполняет следующие действия:
- Клиент отправляет значения x, y, z, градус, отметка времени.
- Сервер получает эти значения (в виде строк) и разбирает их на числа с плавающей точкой.
- Сервер отправляет обратно ((x / 2), (y / 2), (z / 2) (Степень / 2))
- Клиент получаетданных и распечатывает их обратно.
Программа работает как надо, но как только клиент возвращает значения, я получаю следующую ошибку:
Файл "/ System /Библиотека / Каркасы / Python.framework / Versions / 2.7 / lib / python2.7 / socket.py ", строка 174, в _dummy ошибка повышения (EBADF, 'Bad file descriptor')) socket.error: [Errno 9] Bad descriptor file file
Я новичок в python, поэтому я не уверен, что может быть причиной этого.Я читал, что это может относиться к тому, как я закрываю соединение и сокет, но я думал, что сделал это правильно.Любая помощь, чтобы найти и исправить ошибку (и помочь мне узнать больше о Python) приветствуется!Вот мой сервер, который дает мне ошибку:
import socket
HOST = '127.0.0.1'
PORT = 56789
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connection address: ', addr)
Message = ''
while 1:
data = conn.recv(1024)
if not data:
break
print('Received data: ', data)
List = data.split(',')
x = float(List[0]) / 2.0
y = float(List[1]) / 2.0
z = float(List[2]) / 2.0
degree = float(List[3]) / 2.0
Message = str(x) + ', '
Message += str(y) + ', '
Message += str(z) + ', '
Message += str(degree)
conn.send(Message)
conn.close()
s.close()