在python中通过本地服务器进行通信

在python中通过本地服务器进行通信,python,django,server,kivy,Python,Django,Server,Kivy,我正在用python创建一个协作笔记制作应用程序。 在这里,运行应用程序的计算机上的一个人可以创建服务器,随后屏幕上的更改([颜色,像素],其中像素=[x,y])将传输给连接到服务器的其他人 我正在使用kivy创建应用程序。我的问题是关于通过服务器传输数据。 我可以使用以下方法创建服务器: import socket ip_address=socket.gethostbyname(socket.gethostname()) execfile( "manage.py runserver "+ip_

我正在用python创建一个协作笔记制作应用程序。 在这里,运行应用程序的计算机上的一个人可以创建服务器,随后屏幕上的更改([颜色,像素],其中像素=[x,y])将传输给连接到服务器的其他人

我正在使用kivy创建应用程序。我的问题是关于通过服务器传输数据。 我可以使用以下方法创建服务器:

import socket
ip_address=socket.gethostbyname(socket.gethostname())
execfile( "manage.py runserver "+ip_address+":8000" )

现在,其他人如何连接到服务器并请求数据(假设上述代码是正确的)。还有,如何在django中发送数据

Django是一个框架,允许创建可通过HTTP协议访问的站点或API。这对您有几个后果:

  • 除非客户端请求,否则服务器无法向客户端发送消息。HTTP是一种“请求-响应”协议。客户端发送请求(例如,
    http://server.com/getUpdates?id=100500
    )并从服务器获取响应

  • 创建要求服务器随时更新的客户端是一种不好的做法,可能会导致服务器拒绝服务

  • 尽管您可以使用WebSocket,但使用Django执行这样的任务确实是一种过度使用

  • 总之,您需要一个可靠的双工通道来双向发送数据。我从TCP服务器开始,而不是HTTP。幸运的是,Python stdlib有一个模块,您可以从-

    额外阅读

  • (您可能希望将其用于广播)
  • (socket标准底层
    socketserver
    模块)
  • TCP与UDP的对比

    在决定使用何种协议时,应考虑以下方面:

    • TCP是可靠的。消息永远不会隐式消失。如果出现网络错误,将重新发送消息。如果没有连接,将引发显式错误。TCP使用多种算法来适应网络通道。这是一个智能协议

    • UDP是不可靠的。它不具备TCP所具有的任何特性。数据包可以消失,重新排序。但UDP消息是轻量级的,在经验丰富的用户手中,它们可以激活网络动作游戏和流媒体视频等系统(丢失和重新排序的消息在这里并不重要,TCP变得太慢)


    所以我建议从TCP开始。它比UDP更容易快速正确地工作。如果您对TCP有一定的经验,并且有很多人使用您的应用程序并希望获得尽可能低的延迟,请切换到UDP。

    @Vovanrick2002谢谢您的回答!您能告诉我,在这种情况下,TCP和UDP哪个更好?