@zeng124

Как два разных компа, подключенные к двум РАЗНЫМ WIFI, соединить с помощью python socket?

Все гуглил, не хотел сюда обращаться, но не нашел ничего дельно. Есть два компа с разными wifi соединениями, как соединить их через сокеты пайтон. Пробовал соединиться как и через командную строку, так и создав html страничку, ничего не помогает. Вот моя последняя попытка
Достал с командной строки айпишник сделал серверную часть
import time
import socket
from urllib.parse import unquote


html = """<!DOCTYPE html>
<html>
<head> <title>Pico W</title> </head>
<body> <h1>Pico W HTTP Server</h1>
<p>Hello, World!</p>
<p>%s</p>
</body>
</html>
"""
addr = socket.getaddrinfo('ip', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('listening on', addr)

while True:
    try:       
        cl, addr = s.accept()
        print('client connected from', addr)
        request = cl.recv(1024)

        request = str(request)
        led_on = request.find('led=on')
        led_off = request.find('led=off')
        
        cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n'.encode())
        cl.send((html).encode())
        cl.close()
        
    except OSError as e:
        cl.close()
        print('connection closed')

Со второго компа захожу на ip адрес и страница не загружается
Какие есть решения проблемы? Может отказаться от socket и найти другую бибилотеку
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Коротко:
Чисто кодом это как правило не решить.
длинно
Разные Wi-Fi в подавляющем большинстве случаев означает «разные подсети», т.к. большинство устройств , раздающих wi-fi, это маршрутизаторы (роутеры), и они создают каждый свою подсеть со своей адресацией.
Для того, чтобы из подсети одного достучаться в подсеть другого, нужно эти самые роутеры правильно настроить. Без этого практически никакой код не поможет (ну, почти никакой, но исключения лучше не рассматривать).

Как именно настроить роутеры - это отдельный вопрос, к python отношения не имеет. Вам надо почитать про сети, маршрутизаторы, подсети, их адресацию, порты, «проброс» портов и всё вот это вот.

Кроме этого, еще надо решить вопрос с внешними адресами этих роутеров. Эти адреса могут быть тоже в разных подсетях, и лучше, чтобы они были «белыми» адресами, а также чтобы не находились за «файрволлом» и/или чтобы нужные вам порты на внешних адресах этих роутеров были доступны из интернет. Белые адреса - услуга платная, предоставляет провайдер.

Иногда можно обойтись без «белых» адресов через dynamic DNS, но тут могут быть проблемы с доступностью портов. Белые адреса обычно решают проблему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы