Почему люди не могут подключиться к этому «серверу» с python сокетами? - PullRequest
0 голосов
/ 11 июля 2020
import socket

host, port = socket.gethostbyname(socket.gethostname()), 5555

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)


while True:
    conn, addr = s.accept()
    print("<IP-LOGGED> " + addr[0])
    r = conn.recv(1024)
    print(r.decode("utf-8"))

    response = """
HTTP/1.1 200 OK

logger

"""
    conn.sendall(bytes(response, "utf-8"))
    conn.close()

PS: Код не мой, это из учебника по захвату IP-адресов на YouTube. И нет, я не скрипт, малыш ie Я просто пытаюсь понять концепцию захвата IP / создания веб-сервера с сокетами на примере. Я только начал изучать розетки

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Этот сервер находится в вашей локальной сети. Это означает, более или менее, что кто-то, подключенный к inte rnet через тот же маршрутизатор, что и ваш компьютер, сможет получить доступ к вашему серверу, выполнив поиск <YOUR-IP-ADDRESS>:<PORT>.

Однако ваш сервер не подключен к Inte rnet, поэтому кто-то извне не сможет подключиться к вашему серверу. Если хотите, то можете "купить" сервер онлайн (например, вы можете посмотреть https://www.heroku.com, но их много)

0 голосов
/ 11 июля 2020

Когда я запускаю socket.gethostbyname(socket.gethostname()) на своей машине, я получаю 127.0.0.1. Если это так и для вас, то вы привязываетесь только к интерфейсу localhost, поэтому вы можете получить доступ к своему серверу только со своего компьютера.

Чтобы разрешить соединения через любой интерфейс (IPv4), вам необходимо используйте 0.0.0.0:

host, port = '0.0.0.0', 5555

Затем вы также можете подключиться к своему серверу с другого компьютера в вашей сети (или даже через Inte rnet, если ваш маршрутизатор настроен на пересылку порта 5555 на ваш автомат).

...