Итак, мне нужно написать простой веб-сервер, работающий на Raspberry Pi с использованием сокета и python, с надписью «Получил запрос!» на экран RPi, когда сервер получает запрос.
Чтобы попробовать это, я введу IP-адрес RPi (192.168.8.4) в адресную строку браузера с: а) ноутбука в та же ЛВС (192.168.8.33) б) ноутбук в другой ЛВС, например мобильный телефон, использующий 4G
Вот мой код:
import socket
import sys
# --- 1 Create socket ---
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_socket_info = socket.getaddrinfo(None, 80) #Listening for any address
HOST, PORT = my_socket_info[3][4]
print(HOST, PORT) #IP and port
#print(my_socket_info)
# --- 2 Bind socket ---
try:
my_socket.bind((HOST, PORT))
except socket.error:
print("Failed to bind")
sys.exit()
# --- 3 Listen for a connection ---
my_socket.listen(5)
# --- 4 Accept connection ---
while True:
client_connection, client_address = my_socket.accept()
# --- 5 Receive data ---
data = client_connection.recv(1024)
if not data:
break
print ("Got a request!")
print (data)
# --- 6 Send response ---
http_response = b"\HTTP/1.1 200 OK "
client_connection.sendall(http_response)
client_connection.close()
my_socket.close()
Итак, я успешно протестировал мой сервер, запустив netcat на малине, выступая также в качестве клиента, см. рисунок ниже:
НО, когда я пытаюсь связаться с веб-сервером со своего ноутбука (192.168.8.33) или с Inte rnet я просто не могу.
Итак, я Я застрял здесь, что еще я должен сделать? -подключиться из той же сети -подключиться с Inte rnet
* Я включил "виртуальный сервер" в домашнем маршрутизаторе Huawei для переадресации порта 80 на мой IP-адрес RPi следующим образом: Порт WAN: 80 IP LAN: 192.168.8.4 (адрес RPi) Порт LAN: 80 Протокол: TCP Состояние: активно