Why Not Http?

这篇具有很好参考价值的文章主要介绍了Why Not Http?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

游戏服务器开发主要是基于socket,或者websocket,很少采用http(可能有部分非常轻量级的服务器选择http)。这是什么原因呢?我们先来看看socket与http之间的区别。

socket与http之间的区别

socket与http对比
socket http
TCP/IP协议 工作在传输层 工作在应用层
链接状态 长链接 短链接,请求无状态
通信方向 双向通信 单项通信,基于请求-响应模式
数据格式 私有协议,自定义格式 公有协议

选择socket的原因

游戏服务器主要选择socket与客户端进行通信,原因无非是选择socket的优势以及选择http的劣势。下面分成几点来解释。

第一,http是单向通信,基于请求-响应模式。

只能客户端发送请求,服务器才能返回推送。这是一个致命缺陷,也是游戏服务器不采用http的一个最主要的原因。因为服务器需要经常主动推送消息,例如各种icon小红点,系统跑马灯等等。当然,针对http的单向通信,也出现了一些反向ajax技术,或者称为服务端推送(server side push),例如java的第三方依赖cometd。

第二,http是无状态,短链接的。

http无状态特性,决定了每个请求都是独立的。但是很多时候系统是需要状态的,客户端不得不通过cookies或者session来记录会话的状态。同时,http也是短链接的。服务器甚至不知道请求是否来自于预期的客户端,只要有cookies数据参数,任何能发送http数据的终端都能模拟客户端数据发送。这也给客户端数据作弊留下后门,加大服务器风险。

第三,http是公有协议,数据包大,传输安全性差。

http工作在TCP/IP协议中的应用层,具有标准的数据参数格式。服务端传送数据的格式主要是json或者xml,这两种格式属于文本格式,数据包大。

socket工作在TCP/IP协议中的传输层,没有标准协议格式,采用私有协议栈设计。服务端客户端之间是通过字节流来传输数据的,可以采取一些紧凑的数据格式,例如protobuf。也非常方便进行数据加解密。文章来源地址https://www.toymoban.com/news/detail-830536.html

到了这里,关于Why Not Http?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 网络编程 —— 创建非阻塞的 HTTP 服务器

    HTTP 客户程序必须先发出一个 HTTP 请求,然后才能接收到来自 HTTP 服器的响应,浏览器就是最常见的 HTTP 客户程序。HTTP 客户程序和 HTTP 服务器分别由不同的软件开发商提供,它们都可以用任意的编程语言编写。HTTP 严格规定了 HTTP 请求和 HTTP 响应的数据格式,只要 HTTP 服务器

    2024年02月06日
    浏览(35)
  • libevent高并发网络编程 - 04_libevent实现http服务器

    链接: C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 在libevent中,HTTP的实现主要是通过 evhttp 模块来完成的。 evhttp 提供了一个高层次的HTTP服务器接口,可以处理HTTP请求并发送HTTP响应。 在源码中,libevent的HTTP协议处理主要是通过 evhttp 模块来完成的。

    2024年02月15日
    浏览(28)
  • 哈工大计算机网络实验一-HTTP代理服务器的设计与实现

    当客户在浏览器中设置好Proxy Server后,你使用浏览器访问所有WWW站点的请求都不会直接发给目的主机,而是先发给代理服务器,代理服务器接受了客户的请求以后,由代理服务器向目的主机发出请求,并接受目的主机的数据,存于代理服务器的硬盘中,然后再由代理服务器将

    2023年04月24日
    浏览(41)
  • 哈工大计算机网络实验一——HTTP代理服务器的设计与实现

    1. 设计并实现一个基本 HTTP 代理服务器。 要求在指定端口接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址所指向的 HTTP 服务器(原服务器),接收 HTTP 服务器的响应报文,并将响应报文转发给对应的客户进行浏览。 2. 设计并实现一个支持 Cache 功能的 HTTP 代理服

    2024年02月22日
    浏览(34)
  • Cisco Packet Tracer实验:访问Web服务器(加深对网络体系结构的理解)_一台主机访问一个Web服务器,HTTP协议

    如果觉得这篇文章写得好,关注一下公众号“小东方不败”吧!码字不易!感谢大佬的关注! 一台普通的主机和一台服务器: 连线: 配置IP地址: 主机: 服务器: 将模式调成simulation,并且只勾选HTTP协议: 然后就可以看到: 点击PC机,选择Web Browser: 勾选下面的top(置顶

    2024年02月04日
    浏览(40)
  • Python向带有SSL/TSL认证服务器发送网络请求小实践(附并发http请求实现asyncio+aiohttp)

    最近工作中遇到这样的一个场景:给客户发送文件的时候,为保证整个过程中,文件不会被篡改,需要在发送文件之间, 对发送的文件进行签名, 而整个签名系统是另外一个团队做的, 提供了一个接口服务完成签名,但访问这个接口需要提供他们团队提供的证书链先进行认

    2024年04月16日
    浏览(30)
  • Web服务器实现|基于阻塞队列线程池的Http服务器|线程控制|Http协议

    代码地址:WebServer_GitHub_Addr 摘要 本实验通过C++语言,实现了一个基于阻塞队列线程池的多线程Web服务器。该服务器支持通过http协议发送报文,跨主机抓取服务器上特定资源。与此同时,该Web服务器后台通过C++语言,通过原生系统线程调用 pthread.h ,实现了一个 基于阻塞队列

    2024年02月07日
    浏览(52)
  • python:http.server --- HTTP 服务器

    HTTPServer 是 socketserver.TCPServer 的一个子类。它会创建和侦听 HTTP 套接字,并将请求分发给处理程序。创建和运行 HTTP 服务器的代码类似如下所示: 该类基于 TCPServer 类,并在实例变量 server_name 和 server_port 中保存 HTTP 服务器地址。处理程序可通过实例变量 server 访问 HTTP 服务器

    2024年02月08日
    浏览(33)
  • HTTP——五、与HTTP协作的Web服务器

    HTTP——一、了解Web及网络基础 HTTP——二、简单的HTTP协议 HTTP——三、HTTP报文内的HTTP信息 HTTP——四、返回结果的HTTP状态码 HTTP——五、与HTTP协作的Web服务器 HTTP——六、HTTP首部 HTTP——七、确保Web安全的HTTPS HTTP——八、确认访问用户身份的认证 HTTP——九、基于HTTP的功能

    2024年02月14日
    浏览(39)
  • http服务器

    这个项目是一个基于线程池IO模型实现的网络通信http服务器。 项目大致由4个部分组成。 1、tcp服务器,用于建立TCP连接。 2、http服务器,建立监听套接字,将接收到的新的套接字push到线程池中的任务队列中, 3、线程池中的线程循环处理任务队列中的任务,调用回调方法,也

    2024年02月09日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包