Http 什么样的服务器类型最适合于;验证服务器";?

Http 什么样的服务器类型最适合于;验证服务器";?,http,tcp,udp,twisted,Http,Tcp,Udp,Twisted,我正在用python编写一个服务器和客户机系统。系统的目的是检查客户端是否在线 客户端将定期向中央服务器发出“签入”请求。如果服务器在指定的时间段内没有收到该请求,它将向人工发出警报 我是网络编程新手,所以我不确定哪种技术最适合我正在尝试的工作 我一直在看: 扭曲的 UDP或TCP套接字 HTTP请求 我还没有决定服务器是否会回复客户的请求。如果它确实回复了,那么它只会向客户机程序保证它已经“签入”。但这似乎有点多余 我倾向于TCP套接字服务器模型,因为它似乎是最简单和可靠的解决方案 总之,

我正在用python编写一个服务器和客户机系统。系统的目的是检查客户端是否在线

客户端将定期向中央服务器发出“签入”请求。如果服务器在指定的时间段内没有收到该请求,它将向人工发出警报

我是网络编程新手,所以我不确定哪种技术最适合我正在尝试的工作

我一直在看:

  • 扭曲的
  • UDP或TCP套接字
  • HTTP请求
我还没有决定服务器是否会回复客户的请求。如果它确实回复了,那么它只会向客户机程序保证它已经“签入”。但这似乎有点多余

我倾向于TCP套接字服务器模型,因为它似乎是最简单和可靠的解决方案

总之,我有两个问题:

  • 什么是最适合我的网络的网络技术
  • 建立双向连接有意义吗?或者从客户端到服务器的单向连接就足够了

  • 谢谢

    据我所知,Twisted只是一个用于实现协议的框架,这一点不太好。您可以使用twisted实现http,它不是http的替代品

    对于1: 如果我这样做,并且我没有任何具体的要求,http(或https)将在我的列表中占据很高的位置。它可以通过任何你想通过的防火墙,而无需重新配置,你可以在两端使用大量的工具集(服务器和应用程序开发),并且它可以在所有方面工作。这很容易得到http://server.com/checkin?id=12345&status=OK”“或者别的什么。只要记住,如果安全是一个问题,外人是可以看到的。某种基于时间+ID的令牌(比如公钥加密字符串)和https可以用来防止外部人员使用重播攻击。(看起来像:'https://server.com/checkin?token=7d71905f039f67bedcaec2fe5ccc6783'其中十六进制字符串将在服务器上解密为'$ID:$STATUS:$TIME'或类似内容。)

    使用http的另一个好处是,上面的“签入”几乎可以是任何平台上的任何东西,从java到.net到python、perl、ruby、php等,运行在windows、solaris、linux、bsd或其他任何平台的任何组合上。负载平衡很简单(因为当你在《财富1000强》杂志上授权你的“超级支票”应用程序赚了数十亿美元时),实际上没有上限,也没有下限。该设备将享受类似的软件自由,因为您可以使用一个奇特的定制windows服务,或“低级”wget和cron on*nix。(注意:这里没有反对wget或cron的内容,它们是我最喜欢的东西)

    如果您需要超轻量,比如嵌入式设备中的arm(或更小)处理器,UDP可能是一个不错的答案,但如果签入非常关键,您必须找到更可靠的方法。一个简单的ACK响应和接收到的数据的基本校验和可以工作,并且很容易实现

    刚刚实现了一个UDP服务器来通过蜂窝网络监听ARM设备,我不得不说,它没有比UDP简单多少

    对于2:这实际上取决于您是否有其他方法来确保数据传输。使用UDP,是的,您可能希望在特定时间段内通过所述数据的校验和确认数据的接收。使用http,它是内置的(响应代码)


    记住:吻。http实现了这一点,同时具有内在的兼容性。扭曲,伊姆霍,是有点复杂的情况

    如果您的问题更具体一些,并且您包含了一个代码示例,其中有一些您试图解决的特定问题,那么这将非常有用。定义“在线”。这个概念在TCP/IP中没有任何意义。我所说的twisted是指,如您所说,使用twisted实现HTTP或其他协议,如TCP或UDP,而不是直接使用套接字模块或httplib实现它们。您建议我使用flask或django这样的web框架来实现HTTP吗?或者一些内置的python库?您推荐哪些服务器和客户端工具集用于HTTP?谢谢你的回复。我真的很感激。谢谢对于服务器端,我绝对不会重新实现http。我不是python开发人员,但我会研究任何python解释器与apache、lighttpd或nginx web服务器一起工作的情况(?),并编写一个处理程序(上面的“/checkin”部分)来处理HTTP GET。客户端,这取决于您的底层平台和可用的内容,但由于您只需要很少的“智能”,因此我将使用我能找到的最基本的python扩展,可能是内置的。这会让你在两边都有蟒蛇。不需要额外的框架。