在套接字编程中,为什么“客户端”和“服务器”发生逆转?

时间:2017-06-05 16:10:16

标签: sockets tcp server udp client

为什么在套接字编程中“服务器”接收数据包,而“客户端”发送呢?

我正在深入研究C / C ++和Nodejs中的套接字编程;无处不在,在文献和例子中,“服务器”接收数据包,而“客户端”传输数据包。

这对我没有意义。 “服务器”不应该传输数据包,而“客户端”应该接收它们吗?为什么命名约定是这样的?

编辑:几个例子。
1. Beej的数据报C / C ++示例
http://beej.us/guide/bgnet/output/html/multipage/clientserver.html#datagram
2. nodejs示例:
https://www.hacksparrow.com/node-js-udp-server-and-client-example.html

1 个答案:

答案 0 :(得分:0)

这些术语是client-server architecture模型的一部分,它存在于许多不同类型的系统中,根据维基百科的历史可以追溯到1964年......

虽然服务器和客户端具有发送/接收信息的功能,但服务器具有处理客户端不能处理的信息的资源和计算能力。

客户端只是一个轻量级的util,它以服务器期望接收信息或接收某些指令的方式打包并向服务器发送信息,但客户端不需要像服务器那样多的资源。

服务器 - 客户关系示例:

  • Puppet Server (管理所有规则,向客户发送信息和订单等等)
  • Puppet Agent (从Puppet服务器接收订单并安装在多个节点中并发送有关状态的信息)

  • Web服务器(HTTP Apache或Ngnix即)(处理请求/代码以提供HTML结果)

  • 网络客户端(wget,Chrome,Firefox,CURL,链接)将请求发送到要处理的Web服务器。

请注意检查your own example UDP服务器正在监听(等待信息):

server.bind(PORT, HOST);

和UDP客户端是具有“发送”信息功能的客户端:

client.send

哪个回答你自己的问题:

  

“服务器”不应该发送数据包,“客户端”接收   他们?为什么命名约定是这样的?