Я работаю с программным обеспечением для моделирования универсального робота 3 и хочу управлять виртуальным роботом, созданным в программном обеспечении для моделирования универсального робота, с помощью внешнего сервера Python. Я изменил код с веб-сайта универсального робота для установления соединения клиент-сервер, но получаю сообщение об ошибке, в котором говорится, что
send value from server is not a number
и в консоли python для команды c.send
я получаю предупреждение с указанием
expected bytes instead of str
Я был бы очень признателен, если бы вы, ребята, взглянули на следующий код и предложили мне любой способ исправить ошибку. Пожалуйста, не стесняйтесь указывать на любую ошибку, которую вы можете найти в коде, так как я только что познакомился с python и сетью. Спасибо всем заранее.
Я пробовал вместо c.send
, c.sendall()
, а также пытался использовать c.send(bytearray[200,50,25])
, но все еще на стороне клиента, я получаю ошибки, утверждающие, что send number is not a number
. Подскажите, пожалуйста, как исправить ошибку, чтобы после установления связи между клиентом и сервером я мог отправить эти три значения в программное обеспечение для моделирования универсального робота и изменить положение имитируемого робота.
import socket
import time
HOST = "192.168.0.100" # The remote host
PORT = 30000 # The same port as used by the server
print ("Starting Program")
count = 0
while (count < 1000):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT)) # Bind to the port
s.listen(5) # Now wait for client connection.
c, addr = s.accept() # Establish connection with client.
try:
msg = c.recv(1024)
print ("msg")
time.sleep(1)
if msg == "asking_for_data":
count = count + 1
print ("The count is:", count)
time.sleep(0.5)
print ("")
time.sleep(0.5)
c.send("(100,50,25)");
print ("Send 100, 50, 25")
except socket.error as socketerror:
print ("count")
c.close()
s.close()
print ("Program finish")