首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >accept()创建一个新套接字是什么意思?

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

Stack Overflow用户
提问于 2018-06-07 14:06:14
回答 1查看 1.9K关注 0票数 4

我的问题是基于以下的理解

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 15:30:17

  1. 我尝试实现自己的服务器,其中socket()accept()返回不同的套接字描述符值(总是这样吗?)

是。

  1. 我的问题是,如果服务器和ip中没有打开新端口,为什么accept()会创建一个新的套接字:端口对于socket()accept()返回的套接字描述符都是相同的。如果新套接字是由accept()创建的,它与socket()创建的套接字有什么不同?

因为初始套接字用于等待通信,而第二个套接字用于通信。对socket (+bind+listen)的调用准备一个通信端点,也称为套接字(或服务器套接字)以接收传入呼叫。在准备充分的通信点上对accept的调用等待传入呼叫,当这种情况发生时,将创建由调用返回的连接套接字表示的通信通道(2个端点+协议)。

same可能会使您感到困惑,因为两者都称为套接字,但实际上并不是用于相同的用途。在其他一些语言/API中进行了区分。例如,在Java中,有用于等待传入呼叫的ServerSocket和用于通信的Socket

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50743329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档