gpt4 book ai didi

sockets - TCP server socket编程为什么要得到两个文件描述符?

转载 作者:可可西里 更新时间:2023-11-01 02:32:22 25 4
gpt4 key购买 nike

我把这个教程用于服务器套接字编程link .对于功能,我对此没有问题,我要问的更多是关于架构设计的问题。请看一下教程。我们实际上看到了两个文件描述符,一个是在调用 socket() 时,一个是在调用 accept() 时。为什么我们在创建套接字时获得文件描述符是有道理的,因为我们将套接字视为文件;在接受不同的连接时,我们必须有多个文件描述符也是有道理的。但为什么我们需要两者兼备才能发挥作用?

最佳答案

第一个套接字称为监听套接字。 TCP是面向连接的流。每个客户端连接都像文件一样在自己的套接字上运行。如果你只有一个套接字,你将无法区分在它上面收到的数据是属于哪个连接的。所以TCP套接字的设计方式是让监听套接字以LISTEN模式运行,每次客户端要与服务器建立连接时,accept调用都会返回一个新套接字,又名客户端套接字,代表新的连接,以便它专门用于与此客户端通信。

另一方面,UDP 是一种基于无连接数据报的协议(protocol),其中仅使用一个套接字来处理来自所有客户端的所有数据。

关于sockets - TCP server socket编程为什么要得到两个文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com