accept() 创建一个新套接字是什么意思?

2024-04-27

我的问题基于以下理解

  • 套接字由 ip:port 定义。服务器和客户端都有自己的套接字
  • Socket连接由五组server_ip、server_port、client_ip、client_port、protocol定义
  • 套接字描述符是标识套接字的整数值

我尝试实现自己的服务器,其中套接字()和接受()返回不同的套接字描述符值(总是这样吗?)。我的问题是为什么说如果服务器中没有打开新端口并且 ip:port 对于 socket() 和accept() 返回的套接字描述符相同,accept() 会创建一个新套接字。如果新的套接字是由accept()创建的,它与socket()创建的套接字有何不同?


  1. I tried to implement my own server where socket() and accept() returns different socket descriptor value (Is it always the case?).

Yes.

  1. My question is why is it said that accept() creates a new socket if no new port is opened in server and ip:port is same for both the socket descriptors returned by socket() and accept(). If new socket is created by accept() how is it different than the socket created by socket()?

因为第一个套接字用于等待通信,而第二个套接字用于通信。致电socket (+bind+listen)准备一个通信端点,又名socket (or 服务器套接字) 接听来电。致电accept在一个准备好的通信点上,等待来电,当发生这种情况时,会创建一个由以下表示的通信通道(2个端点+协议)连接的套接字由调用返回。

C API 可能会让您感到困惑,因为两者都称为套接字,但实际上用途不同。在一些其他语言/API 中进行了区分。例如在 Java 中你有ServerSocket用于等待来电,以及Socket用于通信的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

accept() 创建一个新套接字是什么意思? 的相关文章

随机推荐

  • 使用 PIL 对图像进行着色,同时保持透明度?

    好吧 情况是这样的 我想使用 Python 图像库来 主题化 图像 如下所示 Theme color 33B5E5 IN OUT 我使用 ImageMagick 命令得到了结果 convert image png colorspace gr
  • 滚动到 HTML 网站中的顶部 JavaScript

    我正在尝试在我的网站中实现滚动到顶部功能 www arrow tvseries com 网站上可以看到 按钮 但它无法正常工作 因为单击时它不会滚动到页面顶部 更重要的是 我希望 滚动到顶部按钮 在向下滚动 例如一半页面 时可见 这是 Ja
  • Discord.js - guildMemberRemove 不起作用,guildMemberAdd 工作得很好

    抱歉 如果格式不正确 我以前从未在这里写过问题 首先 这是我第一次用 JavaScript 编写任何东西 所以这可能是我犯的一些愚蠢的错误 导致了我的问题 我想要做的是当成员加入服务器时发送一条消息 并在成员离开时发送不同的消息 当有人加入
  • 以编程方式最大化屏幕一半的窗口

    我想最大化屏幕左侧的随机窗口 我可以在我的代码中使用 Windows Aero 函数吗 这个窗口can像用鼠标一样最大化 我只想以编程方式做到这一点 I use C 我可以得到IntPtr窗户的 如果可能的话 不要伪造鼠标或键盘输入 这可以
  • Attachconsole的问题

    我需要使 Windows GUI 应用程序可以在控制台中运行 因此当使用命令行调用应用程序时 我将控制台附加到进程 但是 应用程序退出后 除非按 ENTER 键 否则不会显示带有路径的控制台提示符 有什么办法可以不按回车键直接显示路径提示吗
  • 通过从 .BAT 中查找进程正在使用的端口来终止进程

    在 Windows 中 什么可以查找端口 8080 并尝试通过 BAT 文件终止它正在使用的进程 打开命令提示符并运行以下命令 C Users username gt netstat o n a findstr 0 0 3000 TCP 0
  • 如何在命名管道 (mkfifo) 上执行非阻塞 fopen?

    如果我有一个程序使用 mkfifo 创建并尝试打开命名管道 如何在不阻塞的情况下打开管道进行读取或写入 具体来说 我正在编写一个 C 程序 它可以在有或没有 GUI 的情况下运行 用 Java 编写 在 C 程序中 我使用 mkfifo 成
  • 如何使用 Windows 粘贴命令将文本粘贴到 C# 中的其他应用程序?

    如何调用互操作来使用 Windows Pastse 命令将文本粘贴到 C 中的其他应用程序 调用互操作 我的意思是如何对 C 进行编程相同的右键单击粘贴文本 在某些情况下这可能有点棘手 但实际上非常简单且容易做到 下面的示例介绍了如何使用文
  • tensorflow SavedModel - 如何迭代保存

    我正在采用新的SavedModel据我所知 API 是 未来 应该优先于tf train Saver 我想要实现的目标是每次保存一个模型N批次数 我想最多保留 20 个已保存的模型 显然我可以自己监控这一点 但如果tf train Save
  • CodeIgniter 中使用 Active Record 的查询中的 DATE_FORMAT 不起作用

    编码员 我在这里遇到一个小问题 找不到解决方案 我正在使用 CI 的 Active Record 构建查询 这是查询的代码 this gt db gt select u id AS user id u email p display nam
  • 用于查找艺术家属性的 dbpedia SPARQL 查询

    我试图通过 DBPedia 和 SPARQL 查询语言获取有关艺术家的详细信息 但是 根据我的理解 如何获取某些信息似乎几乎是不可能的 我正在尝试找到一位艺术家并获取诸如他们的家乡之类的信息 我猜查询应该类似于 SELECT c WHERE
  • 3 维装箱算法

    我面临着 3 维装箱问题 目前正在进行一些初步研究 了解哪些算法 启发式方法目前能产生最佳结果 由于问题是 NP 难问题 我不希望在每种情况下都能找到最佳解决方案 但我想知道 1 最好的精确求解器是什么 分支定界 我期望使用合理的计算资源可
  • QT 5.6 QWebEngine不保存cookie

    我正在创建名为 webengine 的简单 QT 应用程序 pWebView new QWebEngineView this pWebView gt load QUrl http technoz ru pWebView gt show On
  • jni.h:没有这样的文件或目录

    我一直在关注本教程 http www java tips org other api tips jni simple example of using the java native interface html 在第 5 步 我从 GCC
  • 在 Rails 中使用 RSpec 和 Capybara 时未定义的方法“visit”

    我无法让水豚与 rspec 一起工作 它给了我这个错误 undefined method visit for
  • Android 模拟器出现错误:冷启动:快照不存在

    我在使用 Android 模拟器 7 8 天后就遇到了问题 起初它根本没有运行 现在重新安装模拟器解决了这个问题 但又产生了新的问题 每当我运行模拟器时 都会花费很长时间 大约 5 6 分钟 然后显示错误 Cold Boot Snapsho
  • Android facebook 4.0.0 分享对话框不分享内容

    几个小时以来 我一直在尝试通过 facebook 4 0 0 sdk 分享我的 android 应用程序中的内容 我完全按照Facebook 分享文档 https developers facebook com docs sharing a
  • 多个 nginx 入口重写的默认路径

    这是我的情况 我在 kubernetes 入口 上 有两个 docker 镜像 一个专用于 Web 第二个专用于 api 在下一个配置下 在消息末尾 web将显示将进行一些调用的前端 api 那里一切都好 but 是 404 因为没有定义任
  • 使用多个条件更新 mongodb 中嵌套数组中的对象

    mongo 中的示例文档如下所示 但是我的集合有几千个文档 其中一些具有以下所有测试 有些仅具有以下测试的子集 id ObjectId 52435f0f6f73205f7d37a2b0 ID schoolID 1234 institutio
  • accept() 创建一个新套接字是什么意思?

    我的问题基于以下理解 套接字由 ip port 定义 服务器和客户端都有自己的套接字 Socket连接由五组server ip server port client ip client port protocol定义 套接字描述符是标识套接