Java 如何使用TCP通信比HTTP通信更好?

Java 如何使用TCP通信比HTTP通信更好?,java,http,jsp,tcp,Java,Http,Jsp,Tcp,我已经实现了一个客户端-服务器jave程序,使用TCP进行分配。现在,我必须解释一下,当HTTP等其他替代方案也可用时,我为什么选择TCP进行通信。。 所以我需要一些理由说明为什么TCP比另一种更好。HTTP不是TCP的替代品。它是建立在TCP之上的协议 自定义的交互式协议在TCP上实现时比在HTTP上实现时效率要高得多,因为HTTP工作在一个相当基本的请求/响应基础上 在纯TCP连接上,两端可以随时发送消息。在HTTP上,服务器实际上无法主动向客户端发送消息。它需要等待客户端发送请求 HTTP

我已经实现了一个客户端-服务器jave程序,使用TCP进行分配。现在,我必须解释一下,当HTTP等其他替代方案也可用时,我为什么选择TCP进行通信。。 所以我需要一些理由说明为什么TCP比另一种更好。

HTTP不是TCP的替代品。它是建立在TCP之上的协议

自定义的交互式协议在TCP上实现时比在HTTP上实现时效率要高得多,因为HTTP工作在一个相当基本的请求/响应基础上

在纯TCP连接上,两端可以随时发送消息。在HTTP上,服务器实际上无法主动向客户端发送消息。它需要等待客户端发送请求

HTTP的一个优点是它几乎被普遍理解:所有语言都有服务器和客户端库,有众所周知的缓存和代理机制,并且内置了各种各样的内容协商机制

因此,这是高级抽象和低级抽象之间的传统权衡:

  • 较低级别抽象(TCP)提供了高度的灵活性和实现几乎所有内容的可能性,但使用起来并不简单
  • 更高级抽象(HTTP)提供了更多的内置功能,更容易支持,但额外的功能更难添加

    • TCP再好不过了。它是模型的第四级传输协议。 HTTP是一种应用程序协议(第7级)

      它们是不同的,HTTP是基于TCP的

      HTTP基本上用于web通信—站点、web服务等。可以说HTTP是面向客户机的:客户机向服务器请求一些数据并接收响应。当它发送另一个请求时,依此类推。 TCP是一种基本协议,它允许您以相同的顺序接收所有发送的信息,并且完好无损

      请在Wiki上阅读:和。

      HTTP是TCP之上的协议。它提供了特定的功能,但缺少其他功能(最重要的是状态性和服务器启动通信的能力)。如果您需要一些HTTP难以实现或不可能实现的功能,那么最好使用其他功能


      或者你可以把这些功能放在HTTP之上,这似乎是最流行的选择(可能是因为“只有端口80在任何地方都是开放的,所以让我们用它来处理所有事情”的问题),但通常会导致相当恶劣的黑客行为。

      HTTP使用TCP,所以比较它们并不真正有效。。。问题大概是“当http等更开放、标准化的格式已经存在时,您为什么要选择一种比TCP更合适的实现?”?