(HTTP) как получить доступ к простому веб-серверу, внедренному в Python, с другого хоста - PullRequest
0 голосов
/ 19 сентября 2019

Я только начинаю изучать протокол HTTP и пытаюсь реализовать простой веб-сервер на Python.Приведенный ниже код не является оптимальным и не обрабатывает ошибку, когда запрошенный файл не существует, но давайте предположим, что на сервере есть файл, который запрашивает клиент.

# import socket module
from socket import *

serverSocket = socket(AF_INET, SOCK_STREAM)


# Prepare a sever socket
serverPort = 9998  # Arbitrary port number
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print("The server is ready to receive")

while True:
    # Establish the connection
    print('Ready to serve...')
    connectionSocket, addr = serverSocket.accept()
    print("Request accepted from (address, port) tuple: %s" % (addr,))

    message = connectionSocket.recv(1024).decode()
    filename = message.split()[1]
    f = open(filename[1:])
    outputdata = f.read()

    print("File found!")

    # Send one HTTP header line into socket
    headerLine = "HTTP/1.1 200 OK\n"
    connectionSocket.send(headerLine.encode())
    connectionSocket.send("\n".encode())

    # Send the content of the requested file to the client
    for i in range(0, len(outputdata)):
        connectionSocket.send(outputdata[i].encode())

    connectionSocket.close()
    break

serverSocket.close()

Допустим, существуетфайл HelloWorld.html в каталоге, где также хранится файл python сервера.Когда я запускаю сервер и набираю http://(IP):9998/HelloWorld.html, где (IP) - это адрес IPv4, который я получил от своего ноутбука, как показано на рисунке ниже, он работает хорошо (на рисунке (IP) - 10.230.6.97).

Мой Macbook Pro Wifi

Однако, если я вставлю тот же URL-адрес в другую машину с (IP), скажем, мой смартфон не использует то же соединение Wi-Fi, котороеноутбук использует, мой телефон просто не может добраться до URL.

Почему это так?

Заранее спасибо!

...