当我写“关闭”时,我试图让我的电报机器人关闭计算机。我不想将机器人连接到网站上的托管。我选择我的手机(Android Redmi Note 10)作为托管。我在上面安装了 Termux 和 Pydroid。我写了两个文件:main到我的电脑,client到我的手机。通过在计算机上运行这两个文件,一切正常。但是,当我在计算机上运行“main”并在手机上运行“client”时,会出现错误:
Traceback (most recent call last):
File "/data/data/com.termux/files/home/downloads/FridayBeta.py", line4, in <module>
client.connect(("adress"))
TimeoutError: [Errno 110] Connection timed out
要在计算机上运行的“main”文件:
import socket
import os
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('adress'))
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')
要在手机上运行的“client”文件:
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('adress'))
import telebot
bot = telebot.TeleBot('my api')
@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 5<6:
bot.polling()
我试图在网上寻找答案,但没有成功
的问题在于的手机和电脑不在同一个网络中,或者的电脑防火墙阻止了连接。
让我们一步一步地解决这个问题:
1. 确保设备在同一个网络中:
- 将的手机和电脑连接到同一个 Wi-Fi 网络。
- 为了确保连接稳定,可以创建一个移动热点,并将的电脑连接到该热点。
2. 找到的电脑的本地 IP 地址:
-
在的电脑上,打开命令提示符(CMD)并输入
ipconfig
。 -
找到
IPv4 地址
并记下它,例如192.168.1.100
。
3. 使用本地 IP 地址连接:
-
将的“main”和“client”文件中的
'adress'
替换为的电脑的本地 IP 地址,例如:-
main.py:
server.bind(('192.168.1.100', 端口号))
(不要忘记指定端口号,例如 1234) -
client.py:
client.connect(('192.168.1.100', 端口号))
-
main.py:
4. 配置防火墙:
- 在的电脑上,打开 Windows Defender 防火墙设置。
- 点击“允许应用或功能通过 Windows Defender 防火墙”。
- 点击“更改设置”。
- 找到 Python 并勾选“专用”和“公用”复选框。
- 如果列表中没有 Python,请点击“允许其他应用”并添加 Python 可执行文件。
5. 修复代码中的小错误:
-
在
client.py
中,if message.text.lower == "off":
应该改为if message.text.lower() == "off":
,因为lower
是一个方法,需要括号才能执行。
其他建议:
-
为了便于调试,可以添加
print
语句来查看代码执行到哪一步。 -
可以在手机上使用 Termux 中的
ping
命令测试与电脑的连接,例如ping 192.168.1.100
。
完成这些步骤后,的代码应该可以正常工作了。请记住,让的手机控制电脑关机存在安全风险,因此请谨慎操作,并在测试完成后禁用此功能。
标签:python,python-3.x,sockets,telebot From: 78773098