每130秒将结果从一台计算机发送到另一台计算机的有效方法

2024-04-24 04:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

要点:

  • 我需要从一台机器到另一台机器每1-30秒发送大约100个浮点数。在
  • 第一台机器通过与之相连的传感器捕捉这些值。在
  • 第二台机器监听它们,将它们传递给http服务器(nginx)、电报机器人(telegrambot)和另一个发送带有警报的电子邮件的程序。在

你会怎么做?为什么? 请准确。这是我第一次使用sockets和python,但我相信我可以做到这一点。告诉我关键的细节,让我轻松点! 如果你认为核心的一小部分(几排)是一个微妙的部分,我会很感激,但我问题的主要目的是看到全局。在


Tags: 程序服务器机器http电子邮件机器人nginx传感器
2条回答

最简单的方法是将N个float,convert them to a binary message using ^{},然后send them via a UDP socket送到目标机器(如果它在一个局域网上,你甚至可以使用UDP多播,那么如果需要,多个接收器可以获得数据)。您可以在单个UDP数据报中安全地发送最多60到170个双精度浮点(取决于您的网络)。在

发布者在任何网络级别上都不需要使用shark协议,也不需要任何其他的应用程序都可以很容易地实现。在

这里主要是决定连接设计和选择协议。一、 e.你会和你的服务器建立持久的连接还是每次有新的数据准备好的时候都连接。在

那么您将使用httppost或Web套接字或普通套接字。你会完全依赖nginx还是你的数据捕捉器将是另一种服务。在

这将是一个最安全的方式,如果其他人将连接到nginx查看网站等

写入或使用其他服务器在另一个端口上运行。例如,另一个nginx进程就是为了这个。然后使用SSL(即HTTPS)和基本身份验证来防止其他人滥用连接。在

然后在客户端,每x秒生成一个数据包(泡菜、垃圾()或json或其他),然后使用凭据连接到端口并传递数据包。在

Python脚本可能会在那里等待它。在

或者用Python从头开始编写一个socket服务器来等待数据包。 这里需要注意的是,您必须实现您的协议和安全性。但你会得到一些其他的好处。如果您愿意或需要的话,更容易维护持久连接。我不认为这是必要的,它可能会成为庞大的代码中断恢复。 不,在某个端口等待连接。客户机必须清楚地标识自己(否则您会立即断开连接),它必须证明它与您的协议一致,然后发送数据。 使用SSL套接字来实现这一点,这样就不必自己实现加密来保存身份验证数据。您甚至可以只依赖预先构建的密钥来实现安全性,然后只传递数据。在

别担心速度。套接字是由操作系统处理的,如果您在类Unix的系统上,您可以在所需的时间间隔内尽可能多地连接。除了DoS攻击之外,没有什么能对它造成太大的影响。在

如果是在Windows上,最好使用一些成品服务器,因为Windows有时不会按时释放套接字,因此您将被迫等待或进行一些黑客活动以避免这种不幸的行为(非阻塞套接字和重用addr,然后需要一些flo控制)。在

只要你的数据很小,你就不必太担心服务器协议。我自己也会使用HTTPS,但我会用Python编写myown轻量级服务器,或者修改并运行internet上的一个示例。但那是我。在

相关问题 更多 >