Я пишу сценарий python TCP, который будет действовать как клиент и получить считывание температуры с контроллера температуры LakeShore336 (который действует как сервер). Мне нужно передать команду на сервер с клиента и вывести ответ. Я получаю выходы до «Spot 2» после отправки команды, но когда вызывается s.recv, я остаюсь висящим. (Python 2.7)Ответ сервера TCP
Client.py
import socket
ip = '192.168.62.233'
port = 7777 # The same port as used by the server/machine
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
print 'Spot 1'
s.send('KRDG? A[term]')
print 'Spot 2'
data = s.recv(4096)
print 'Spot 3'
s.close()
print 'Received', repr(data)
EDIT: В конце концов, мне просто нужно добавить
s.send('KRDG? A\r\n')
Так что было терминатором. Спасибо за помощь.
Правильно, 'recv()' является блокирующим вызовом. Он будет блокироваться до тех пор, пока сервер не отправит ответ до 4096 байт или не закроет соединение (это сложнее, но это простая история). Бьюсь об заклад, вы не закрываете соединение на сервере после отправки ответа. – grochmal