Хорошо, я установил HotSpot на свой телефон Android.который в данном случае является вашим «Маршрутизатором», использовал IP-адрес моего телефона.и На компьютере попытался запустить код вашего клиента, его отправка тестовых сообщений на клиенте:
Отправка: тестовое сообщение Отправка: тестовое сообщение Отправка: тестовое сообщение Отправка: тестовое сообщение ....
но я ничего не получаю на вашем Сервере, все еще говоря, что сервер запущен.
, поэтому я настроил переменную вашего хоста в «Клиентском приложении» следующим образом, также ваши порты не совместимы 2000 на сервере и 2001 на клиенте:
host = "" # Внешний IP порта моего маршрутизатора = 2000 ПРИМЕЧАНИЕ!Я оставил хост пустым
Поскольку я думаю, что по какой-то причине сервер размещен локально на компьютере, на котором вы запускаете сервер.Таким образом, я также могу подключиться локально с того же компьютера, на котором я запустил серверное приложение:
host = "localhost" # Внешний IP-адрес моего маршрутизатора
в клиентском приложении.
Вот так все выглядит.
Код сервера Запустите это на своем компьютере.
import socket
host = "" # IP of my computer
port = 2000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
addrs = []
print("Server started")
while True:
data, addr = s.recvfrom(1024)
if not addr in addrs:
addrs.append(addr)
data = data.decode("utf-8")
print("Recieved: " + str(data))
print("Sending: " + data)
for add in addrs:
s.sendto(data.encode("utf-8"), add)
В зависимости от того, где вы запустили свой серверApp.используйте IP-адрес компьютера, на котором работает сервер.Я все еще учусь, поэтому не знаю, как настроить его для использования IP-адреса вашего маршрутизатора.
ClientApp Code запустите это на своем другом компьютере или более.или даже на android.
import socket
import time
host = "ip_of_the_computer_the_server_is_running_on" # connecting from another computer
#host = "localhost" # If you connecting locally
port = 2000
server = (host, port)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setblocking(False)
while True:
message = "Test message"
time.sleep(1)
print("Sending: " + message)
s.sendto(message.encode("utf-8"), server)
try:
data, addr = s.recvfrom(1024)
except BlockingIOError:
pass
else:
data = data.decode("utf-8")
print("Recieved: " + str(data))
И используйте свой маршрутизатор только для подключения к той же точке доступа. Протестировано с моей TOTO-LINK.пока я не использую IP-адрес моего маршрутизатора на клиентском хосте.
Демонстрации Сервер
Клиент
Клиент на мобильном телефоне