кнопки для отправки 1-байтового символа на IP-адрес - PullRequest
0 голосов
/ 12 декабря 2011

Я новичок в Python и ищу способ отправить 1-байтовый символ (например, букву "D") на IP-адрес.Это используется для управления роботом, поэтому все, что мне нужно, это вперед, назад, влево и вправо.Я провел некоторые исследования в Интернете, и он предлагает использовать сокеты для подключения к IP-адресу, но мне кажется, что это немного сбивает с толку.Я уже сделал 4 кнопки на своей веб-странице, но я не очень уверен, как заставить веб-страницу отправлять сигнал на IP-адрес, когда пользователь нажимает кнопку (например: если пользователь нажимает кнопку «вправо»,веб-страница отправит однобайтовый символ «r» на ip-адрес)

Любая помощь будет принята с благодарностью

ps. Будет ли какая-то большая разница между сетевым методом, который я использую?как между Wi-Fi и 3G

1 Ответ

0 голосов
/ 12 декабря 2011

Сокеты просты, особенно в Python! :)

Это простая программа для отправки одного письма на некоторый ip-адрес:

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, просто в том, что для связи через Интернет используется сокет. :)

Дублируйте первую программу, по одной для каждой кнопки, и измените то, что отправляется на сервер. Затем у вас есть четыре программы, посылающие разные команды для подключения к вашим кнопкам.

Подробнее о сокетах Python здесь и здесь .

...