当前位置: 首页 > 知识库问答 >
问题:

在socket编程中,为什么“客户端”和“服务器”是颠倒的?

胡高朗
2023-03-14

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

我正在深入研究C/C和Nodejs中的套接字编程;在文献和例子中,到处都是“服务器”接收包,而“客户机”发送包。

这对我来说没有意义。难道“服务器”不应该发送数据包,而“客户端”不应该接收数据包吗?为什么命名惯例是这样的?

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

共有1个答案

阎咏思
2023-03-14

根据维基百科的说法,这些术语是客户机-服务器体系结构模型的一部分,该模型在许多不同类型的系统中运行。。。

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

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

服务器-客户端关系的示例:

>

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

    Web服务器(HTTP Apache或Ngnix,即)(处理请求/代码以交付HTML结果)

    考虑到这一点,请检查您自己的示例,UDP 服务器正在侦听(等待信息):

    server.bind(PORT, HOST);
    

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

    client.send
    

    哪个回答你自己的问题:

    “服务器”不应该传输数据包,而“客户端”接收数据包吗?为什么命名约定是这样的?

  •  类似资料:
    • 问题内容: 我尝试使用以下代码从服务器到客户端发送文件和目录列表。服务器正在从客户端接收消息,但我不知道服务器是否没有发送回结果或客户端是否不接受结果。 服务器端: 问题答案: 据我所见,您在客户端上做的同时在服务器上做。从服务器发送的字符串中没有行尾字符,因此客户端将永远无法完成。执行outqw.println()或添加到要发送的内容的末尾。话虽这么说,很难用一堆注释掉的东西来浏览未格式化的代码

    • 问题内容: 我有以下代码: 为什么这不将“ bar”写到我的文本文件中,但提示“ 42”? 注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于 任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。 问题答案: 您的代码分为两个完全独立的部分,

    • 问题内容: 我有以下代码: 为什么这不将“ bar”写入我的文本文件,而是发出“ 42”警报? 注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于 任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。 问题答案: 您的代码分为两个完全独立的部分

    • 本文向大家介绍Java Socket编程服务器响应客户端实例代码,包括了Java Socket编程服务器响应客户端实例代码的使用技巧和注意事项,需要的朋友参考一下 通过输入流来读取客户端信息,相应的时候通过输出流来实现。 服务端类的代码: 客户端类的代码: 先运行服务器端类,之后再运行客户端类: 服务器端类输出结果: 客户端类的输出结果: 总结 以上就是本文关于Java Socket编程服务器响应

    • 创建 HTTP 客户端 使用默认选项创建一个HttpClient实例,如下所示: HttpClient client = vertx.createHttpClient(); 如果您想要在创建时配置客户端的选项,如下所示: HttpClientOptions options = new HttpClientOptions().setKeepAlive(false); HttpClient clien

    • 创建 TCP 客户端 最简单的方法来创建一个 TCP 客户端,使用默认选项如下所示: NetClient client = vertx.createNetClient(); 配置 TCP 客户端 如果你不想使用默认值,则创建TCP 客户端时,通过传入NetClientOptions实例可以配置: NetClientOptions options = new NetClientOptions().s