我是python的新手,我正在寻找一种方法将1字节字符(例如:字母“D”)发送到ip地址。这用于控制机器人,所以我需要的只是向前,向后,向左和向右。我在网上做了一些研究,它建议使用套接字连接到ip地址,但这似乎让我感到困惑。我已经在我的网页上制作了4个按钮,但是我不太确定当用户点击按钮时如何让网页将信号发送到ip地址(例如:如果用户按下“向右”按钮,网页将向ip地址发送一个字节字符“r”
非常感谢任何帮助
ps我使用的网络方法会有什么大的区别吗?喜欢wifi和3G之间
答案 0 :(得分:0)
套接字很简单,特别是在Python中! :)
这是一个向一些ip-address发送单个字母的简单程序:
import socket
# Each address on the Internet is identified by an ip-address
# and a port number.
robot_ip_address = "192.168.0.12" # Change to applicable
robot_port = 3000 # Change to applicable
# Create a socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect to somewhere...
s.connect((robot_ip_address, robot_port))
# Send one character to the socket
s.send('D')
# Close the socket after use
s.close()
机器人当然需要一个类似的程序来接收命令:
import socket
robot_port = 3000 # Change to applicable
# Create a socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# "Bind" it to all ip-addresses on the local host, and a specific port
s.bind(("", robot_port))
# Tell the socket to listen for connections
s.listen(5)
while True:
# Wait for a new connection
print "Waiting for connection..."
(c, c_addr) = s.accept()
print "New connection from: ", c_addr
while True:
try:
command = c.recv(1)
except socket.error, e:
print "Error: %r" % e
break;
if command == 'D':
# Do something for the 'D' command
print "Received command 'D'"
elif command == '':
print "Connection closed"
break
else:
print "Unknown command, closing connection"
break
c.close()
正如您所看到的,编写和理解的代码非常少。您不必了解网络和TCP / IP的大部分工作方式,只需使用套接字通过Internet进行通信即可。 :)
复制第一个程序,每个按钮一个,并修改发送到服务器的内容。然后你有四个程序发送不同的命令,连接到你的按钮。