服务器可以使用TCP向客户端发送消息吗?

时间:2018-10-31 04:31:42

标签: http tcp websocket server client

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

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

由于我不了解TCP,因此请您告诉我TCP仅能执行此任务吗?

1 个答案:

答案 0 :(得分:0)

如果您有自定义客户端(例如,浏览器中没有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之上运行),并使用别人已经完成的工作,而不是从头开始构建自己的协议。

相关问题