Здравствуйте
У меня нет всей информации, которая мне нужна, чтобы сделать этот пост настолько информированным, насколько мне хотелось бы, однако я могу высказать некоторые догадки и постараться изо всех сил объяснить, что я думаю пошло не так. Вы готовы?? Давайте займемся этим.
Итак,
Вы начинаете с создания tcp socket
и затем подключаетесь к серверу, расположенному локально на порту 11111
host = socket.gethostname()
port = 11111
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
затем вы вводите al oop
while True:
#input command, request eval
Здесь ваша цель - взять пользовательский ввод и отправить его на сервер на eval
. Вы делаете это с
#get user input
print "Enter your Command:"
command = raw_input()
#send command to server for eval
sock.sendall(repr(command))
#receive then print eval
data = sock.recv(1024)
print('Received', repr(data))
, это работает и отправляет команды так, как вы ожидаете, хотя отправка repr(command)
может быть не тем, что вы хотите отправить
command = "1+1"
eval(command)
//2
eval(repr(command))
//'1+1'
Сейчас
Вот где я должен сделать некоторые предположения
Раньше вы connected
на сервер
sock.connect((host, port))
Я предполагаю, что сервер accepts
ваше соединение evals
ваше command
и отправляет ответ обратно. Что-то вроде
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind('localhost',11111)
sock.listen()
while True:
conn, addr = sock.accept()
command = conn.recv(1024)
sock.sendall(eval(command))
Если это так, то ваше соединение может не работать, потому что ваш eval сервер запускает eval
один раз, а затем accepts
новое соединение. Это означает, что ваш клиент больше не может отправлять или получать данные с сервера
Надеюсь, это поможет.