Это мой скрипт на Python для получения данных от клиента:
import time
import socket
HOST = ''
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')
try:
s.bind((HOST, PORT))
except socket.error as socketError:
print('socket binding failed, ', socketError)
print('Exiting...')
sys.exit(0)
print('Socket binding complete')
s.listen(1)
print('Socket listening for connection...')
conn, addr = s.accept()
print('connected to ', addr[0])
bfr = b''
try:
while True:
while True:
temp = conn.recv(1024)
print('temp is ',temp.decode('utf-8'))
print('buffer value ', bfr.decode('utf8'))
if not temp:
break
bfr += temp;
data = bfr.decode('utf-8')
bfr = b''
print('value received,', data)
if data == 'Connection-Ready to receive commands':
print('')
#other conditions
except Exception as loopException:
print("Exception occurred in loop, exiting...")
finally:
s.close()
скрипт зависает после печати
connected to 192.168.4.197
и не принимает никаких команд от клиента. если клиент отключается, все команды отправляются на печать.
Кто-нибудь знает, почему он так себя ведет? Пожалуйста, спросите, если вам нужно больше деталей
Обновление 1
Попытался удалить внутреннее время while и добавил time.sleep(.10)
, и скрипт не зависает, но только первая команда печатает как есть, а остальные печатают с переводом строки после первого символа, например, если я отправлю 10, он сначала напечатает 1, а 0 в другой строке. Все, что я хочу - это получать команды, отправленные клиентом, каждая команда состоит из одного слова.