我已经使用TCP实现了一个客户端服务器jave程序来进行分配。现在我要解释为什么当其他替代方案(如HTTP)也可以选择TCP进行通信时。 所以我需要一些理由来解释为什么TCP优于另一个..
答案 0 :(得分:7)
HTTP不是TCP的替代。它是建立在TCP之上的协议。
在TCP上实现自定义交互式协议可以比在HTTP上实现更高效,因为HTTP在相当基本的请求/响应基础上工作。
在纯TCP连接上,两端都可以随时发送消息。在HTTP上,服务器无法主动向客户端发送消息。它需要等待客户端发送请求。
HTTP的一个优点是几乎普遍理解:所有语言都有服务器和客户端库,有很好理解的缓存和代理机制,并且内置了各种各样的内容协商机制。
所以这是高级别或低级别抽象之间的传统权衡:
答案 1 :(得分:4)
HTTP是TCP顶层的协议。它提供特定功能而缺少其他功能(最显着的状态和服务器启动通信的能力)。如果您需要HTTP难以或不可能的东西,那么使用其他东西是个好主意。
或者你可以在HTTP之上使用这些功能,这似乎是最受欢迎的选项(可能是因为“只有端口80在任何地方都是开放的,所以让我们用它来解决所有问题”)但通常会导致相当讨厌的黑客。
答案 2 :(得分:3)