Linux 套接字描述符

标签 linux sockets

我正在阅读有关 UNIX 域套接字的教程 link .

通过搜索SO,我发现套接字描述符据说与文件描述符相同,并且据说指向文件描述符表中的一个条目。

如果这是真的,我想问一下,对于指向打开文件的 inode 的 fd,套接字描述符的条目是否也包含套接字文件的 inode ?

同样在示例代码中,服务器接受连接后:

len = sizeof(struct sockaddr_un);
s2 = accept(s, &remote, &len);

s2 会指向什么(如果套接字描述符类似于 fd,那么 s2 会指向文件描述符表中的哪个条目)?

此外,unix 域套接字 API 是否只使用打开、读取和写入下面的套接字文件?

最佳答案

我认为“s2”只是在客户端监听的另一个套接字描述符。这是接受的手册页:

http://man7.org/linux/man-pages/man2/accept.2.html

基本上,发生的事情(假设我正在 Beej 网站上查看正确的代码)是创建一个可以接受连接的套接字描述符。当实际建立连接时,您将创建另一个特定于该连接的套接字。 This page has another example这可能会让事情变得更清楚一些。

关于Linux 套接字描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459712/

相关文章:

design-patterns - 有没有任何设计模式对使用套接字实现异步通信有帮助?

java - 为什么方法channelActive总是在服务器和客户端中被调用 - Netty

java - Java 中的套接字 - 如何将 DataOutputStream 写入特定客户端?

Python 多进程队列 get() block

linux - 根据某些条件从文件中提取特定行(命令行)

linux - xampp 服务器(如何启动和运行)

linux - 为什么我的 Mac 上无法安装 Nano 编辑器?

linux - Apache 时区与操作系统 (Linux RedHat) 时区

node.js - 检查用户在套接字连接中使用哪种浏览器类型

linux - 如何处理包含有问题(= shell 元和空格)字符的路径名?