【问题标题】:How can I get data to be sent over sockets infinitely every certain amount of time?如何每隔一定时间无限次通过套接字发送数据?
【发布时间】:2021-12-10 13:56:53
【问题描述】:

我正在使用套接字从客户端向我的服务器发送数据。我遇到的问题是它只发送一次并且再也不会发送,我需要它每 2 分钟循环发送一次

port = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = socket.socket()
s.connect(("",port))

print('Puerto en', ip)

while True:
    ph=phsensor()
    start_counter = 1
    sleep (1)
    start_counter = 0
    caudal = (count * 60 * 2.25 / 1000)
    print("El caudal es: %.3f L/min" % (caudal))
    count = 0
    sleep (5)
    if caudal < 1:
        print("No esta llegando suficiente agua")
        led1.value(1)
    else:
        led1.value(0)
    if caudal > 2:
        print("El agua esta circulando bien")
    data=';'.join([str(caudal),str(ph)]).encode('utf-8')
    s.send(data)
    dataFromServer = s.recv(1024)

【问题讨论】:

  • 服务器是否真的在发送任何东西来响应它接收到的数据?最后的.recv() 将阻塞,直到服务器发送一些东西。

标签: python loops sockets micropython


【解决方案1】:

好吧,让我给你一些建议:

  • 首先:当你使用sockets或者其他I/O外设时,永远不要让运行I/O操作的线程进入休眠,因为你会阻塞外设,它会带来你的几个性能问题。让我分享一个link 在python 中使用Thread.sleep

  • 第二:您分享的代码表明您的程序是单线程的,并且您正在使用sleep,这打破了第一点。我推荐你使用线程,这里有一个link 知道如何使用它们。

  • 第三:尝试创建一个始终运行的主线程,无论它是否等待信号,例如按键或其他事件。第二个线程将负责检查调用发送方法的时间。

这些是我的建议,希望你能解决你的问题或作业。

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2012-06-09
    • 1970-01-01
    • 2020-02-29
    • 2010-11-28
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多