Тайм-аут соединения сокета при запуске клиента Python на Android и сервера в WindowsAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Тайм-аут соединения сокета при запуске клиента Python на Android и сервера в Windows

Сообщение Anonymous »

Я пытаюсь создать бота для Telegram, который сможет выключать мой компьютер, когда я отправляю команду «выключить». Я хочу разместить бота на своем телефоне Android (Redmi Note 10) с помощью Termux и обеспечить его связь с сервером, работающим на моем компьютере с Windows.
Настройка:
Сервер: компьютер с Windows (запускается main.py)
Клиент: телефон Android с Termux (запускается client.py)
Проблема: когда оба файла запускаются на одном компьютере, все работает. Но когда я запускаю сервер на своем компьютере и клиент на своем телефоне, я получаю ошибку тайм-аута.
Ошибка:

Код: Выделить всё

Traceback (most recent call last):
File "/data/data/com.termux/files/home/downloads/FridayBeta.py", line 4, in 
client.connect(("adress"))
TimeoutError: [Errno 110] Connection timed out
Код сервера:

Код: Выделить всё

import socket
import os

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('address'))  # I put my computer's local IP here
server.listen()

while True:
user, adres = server.accept()
while True:
data = user.recv(1024).decode("utf-8").lower()
print(data)
if data == "off":
os.system('shutdown -s -t 0')
Код клиента:

Код: Выделить всё

import socket
import telebot

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('address'))  # Same IP address as server

bot = telebot.TeleBot('my_api_token')

@bot.message_handler(content_types=['text'])
def hi(message):
if message.text.lower() == "off":
client.send("off".encode("utf-8"))
else:
bot.send_message(message.chat.id, "hi")
q = message.text.lower()
client.send(q.encode("utf-8"))

while True:
bot.polling()
Я проверил, что оба устройства находятся в одной сети Wi-Fi, я использую локальный IP-адрес компьютера (192.168.xx), брандмауэр Windows отключен для тестирования, код работает, когда и клиент, и сервер работают на одном компьютере (с использованием 127.0.0.1), телефон может пинговать IP-адрес компьютера.
Почему время соединения истекает только при запуске на разных устройствах?
Do Мне нужно настроить что-то на Android (Termux), чтобы разрешить исходящие соединения сокетов?
Что-то не так с тем, как я обрабатываю соединение на стороне сервера?
Компьютер: Windows 10, Python 3.10
Телефон: Android (Redmi Note 10), Termux, Python 3.11

Подробнее здесь: https://stackoverflow.com/questions/787 ... rver-on-wi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»