Вот минимальный пример кода, который я использую. . На стороне клиента я ввожу IP-адрес, который я получаю при запуске ipconfig на сервере, он работает как с адресом IPv4, так и с временным адресом IPv6 (разумеется, меняя соответствующий флаг)
СЕРВЕР
Код: Выделить всё
import socket
ip_address = ""
ipv6 = False # True
PORT = 12345
STREAM = socket.SOCK_STREAM
if ipv6:
FAMILY = socket.AF_INET6
bind_args = (ip_address, PORT, 0, 0)
else:
FAMILY = socket.AF_INET
bind_args = (ip_address, PORT)
server_socket = socket.socket(FAMILY, STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(bind_args)
server_socket.listen()
unsecured_sock, client_address = server_socket.accept()
print("accepted from", client_address)
Код: Выделить всё
import socket
ip_address = "Entered from ipconfig or whatsmyip.com run from server"
ipv6 = False # True
PORT = 12345
STREAM = socket.SOCK_STREAM
if ipv6:
FAMILY = socket.AF_INET6
bind_args = (ip_address, PORT, 0, 0)
else:
FAMILY = socket.AF_INET
bind_args = (ip_address, PORT)
sock = socket.socket(FAMILY, STREAM)
sock.connect(bind_args)
print("Connected!")
Подозреваю, что делаю что-то очень основная ошибка, но я не знаю, что. Я подозревал, что это связано с переадресацией портов, поэтому попробовал следующий скрипт UPnP
Код: Выделить всё
import upnpy
upnp = upnpy.UPnP()
devices = upnp.discover()
device = upnp.get_igd()
service = device.WANIPConn1
service.AddPortMapping(
NewRemoteHost='',
NewExternalPort=12345,
NewProtocol='TCP',
NewInternalPort=12345,
NewInternalClient='192.168.0.136', # Local server IP
NewEnabled=1,
NewPortMappingDescription='Test port mapping entry from UPnPy.',
NewLeaseDuration=600)
print("added new port mapping")
Подробнее здесь: https://stackoverflow.com/questions/659 ... al-network