首页 > 解决方案 > 服务器可以使用 TCP 向客户端发送消息吗?

问题描述

我以前只做HTML/HTTP,在我们的网站上做了一些websockets,现在我分配了一个任务,客户端和服务器,客户端连接到服务器的IP,服务器向客户端发送一些命令。

我原本想使用 HTTP 和 websocket 来完成这项任务,但有人告诉我应该使用 TCP 而不是 HTTP/websocket。

由于我不知道 TCP,你能告诉我 TCP 是否只能完成这项任务?

标签: httptcpwebsocketserverclient

解决方案


如果您有一个自定义客户端(例如,不是浏览器中的 Web 应用程序),它可以根据需要与您的服务器建立纯 TCP 连接。但是,TCP 上的每次传输都需要双方都使用的某种数据格式(通常称为“协议”),因此使用现有协议通常比重新发明自己的协议更容易。HTTP、webSocket、FTP 等是定义要执行的操作和数据格式的协议。

因此,通常您会找到一个与您正在尝试做的事情非常匹配的协议,并获得一个现有的库来在客户端和服务器上实现该协议。这通常会为您节省大量编写和解析通过连接发送的数据的工作。

选择哪种协议完全取决于您尝试通过未共享的连接完成什么,因此我们无法提出任何具体建议。

我原本想使用 HTTP 和 websocket 来完成这项任务,但有人告诉我应该使用 TCP 而不是 HTTP/websocket。

你问过他们为什么这么说吗?HTTP 非常通用且易于使用,但它是一个请求/响应协议(客户端 A 发送请求,服务器 B 提供响应,然后连接完成)。这对某些类型的东西很好,对其他类型的东西不太好。

webSocket 实际上是通过 HTTP 发起,然后将协议切换为 webSocket 数据帧格式,并被设计为一个可以长寿命的持久连接,并且可以双向发送数据。例如,客户端可以通过 webSocket 连接到服务器,然后服务器可以在股票报价更新到达服务器时每隔几秒发送一次。客户只会坐下来等待更新的到来。

由于我不知道 TCP,你能告诉我 TCP 是否只能完成这项任务?

TCP当然是有能力的。TCP 是一个较低级别的传输层,许多其他东西(如 HTTP)都建立在其之上。您可以通过 TCP 进行几乎任何类型的网络连接,但由于它是低级别的,您必须自己从头开始设计许多通信机制。您通常会首先寻找与您的连接需求相匹配的现有协议(在 TCP 之上运行)并使用其他人已经完成的工作,而不是从头开始构建您自己的协议。


推荐阅读