【问题标题】:Can server send message to client using TCP?服务器可以使用 TCP 向客户端发送消息吗?
【发布时间】:2019-04-04 04:55:21
【问题描述】:

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

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

由于我不知道 TCP,你能告诉我 TCP 只有这个任务吗?

【问题讨论】:

  • HTTP 使用 TCP。 TCP 是传输层协议,HTTP 是应用层协议。
  • 什么是客户端?自定义应用程序?浏览器中的网页?
  • @jfriend00 自定义应用

标签: http tcp websocket server client


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2013-04-29
    • 2019-12-06
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多