首页 > 编程问答 >连接Python套接字的问题

连接Python套接字的问题

时间:2024-07-20 23:54:54浏览次数:9  
标签:python python-3.x sockets telebot

当我写“关闭”时,我试图让我的电报机器人关闭计算机。我不想将机器人连接到网站上的托管。我选择我的手机(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', 端口号))

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

相关文章

  • 如何修复导入 Numexpr Python 时的错误
    在Windows10Python3.7.9(IDLE)上,我成功安装了“pipinstallnumexpr”,但在“importnumexprasne”时出现错误:Traceback(最近一次调用):文件“<pyshell#21>”,第267行,位于将numexpr导入为ne文件“C:\Python379\lib\site-packages\numexpr_init_.py”......
  • 让 cpython 优化恒定条件
    我正在用Python编写需要尽可能高效运行的代码,但有时我需要深入挖掘调试语句。不要注释这些输入或输出(或者使用外部预处理器来处理代码,就像这里建议的那样Python相当于#ifdefDEBUG或这里如何在python中实现“#ifdef”?|||)我想在模块的开头定义一个变量......
  • 如何使用 for 循环在 python jupyter 笔记本中创建动态图?
    我正在学习本课关于用Python求解热方程。该课程指出,在求解热方程后,我们可以通过在循环中简单地调用pyplot.plot()来可视化解的动画图,其中下面的代码将动态绘制每次每个点的温度,从而得到一个动画情节(课程帖子中提供了动画情节的示例)。importnumpyfrommatplotlibi......
  • Python:动态爱心代码
    importrandomfrommathimportsin,cos,pi,logfromtkinterimport*CANVAS_WIDTH=640CANVAS_HEIGHT=480CANVAS_CENTER_X=CANVAS_WIDTH/2CANVAS_CENTER_Y=CANVAS_HEIGHT/2IMAGE_ENLARGE=11HEART_COLOR="#FF99CC"defcenter_......
  • 如何在 PYTHON 中查找输入数字的千位、百位、十位和个位中的数字?例如:256 有 6 个一、5
    num=int(input("Pleasegivemeanumber:"))print(num)thou=int((num//1000))print(thou)hun=int((num//100))print(hun)ten=int((num//10))print(ten)one=int((num//1))print(one)我尝试过这个,但它不起作用,我被困住了。代码几乎是正确的,但需......
  • ModuleNotFoundError:没有名为“pyaes”的模块 python 虚拟机
    在此处输入图像描述当我在启动python项目的虚拟机上构建某个工具时,几秒钟后会出现此消息。我已经尝试重新安装pyaes但无济于事。谁能帮我?非常感谢我已经尝试重新安装pyaes但无济于事,我搜索了tepyaes模块的十个路径,但我没有找到它,而我在另一台虚拟机上完成了......
  • 如何通过 mutagen (Python) 为 mp3 文件中的情绪添加价值?
    我找不到通过mutagen(Python库)将情绪写入mp3文件的方法初始化:frommutagen.mp3importMP3frommutagen.id3importID3,TIT2,TALB,TPE1,TPE2,TCON,TPUB,TENC,TIT3,APIC,WOAR,PRIVaudio=MP3(mp3_file,ID3=ID3)我可以使用audio['TIT3']=TIT3(......
  • 使用 Python 操作 Splunk
    使用Python操作Splunk目录使用Python操作Splunk1参考文档2安装PythonSplunk-SDK3连接splunk4配置查询5参考1参考文档SplunkGithub地址:GitHub-splunk/splunk-sdk-python:SplunkSoftwareDevelopmentKitforPythonSplunk开发者文档地址:Pythontools|......
  • Python:如何通过请求帖子对评论进行投票?
    我对评论进行投票的代码无法正常工作。它返回一个http500错误。我有一个使用用户登录的Python程序,它应该自动对评论进行投票。我的代码如下:frombs4importBeautifulSoupimportrequestslogin_url="https://xxxxxxxxxxx/auth/login"login_url_post="http......
  • python_day7(补1)
    数据类型​ 之前为列表类型​ 插入一个元组的介绍 之后还有字典,三者区别为括号方式()[]{}元组类型(tuple)使用:先定义一个元组数据​ vegetable_tuple='(tomato','corn','cucumber','carrot','corn','pumpkin)'与列表类型格式很像,不过只能取不能改,需要特......