首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字和文件描述符

套接字和文件描述符
EN

Stack Overflow用户
提问于 2012-11-14 19:33:52
回答 3查看 26K关注 0票数 24

我正在学习Unix中的网络编程,目前正在尝试理解套接字和文件描述符的概念。据我所知,文件描述符只是指针数组中的一个位置(文件描述符表?)这些指针指向内存中的某个文件。

套接字描述符与文件描述符共享此数组,但指针指向套接字。或者,是否还有其他仅用于套接字的东西?

此数组对于每个应用程序/进程都是唯一的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-14 19:40:27

是的,套接字也是和文件一样索引到同一个表中。至少对于UNIX系统(如Linux和OSX),Windows是不同的,这就是为什么你不能使用readwrite来接收和发送数据。

每个进程都有自己的“文件”描述符表。

票数 26
EN

Stack Overflow用户

发布于 2016-01-09 21:12:04

套接字在UNIX操作系统中只是一个文件。在UNIX操作系统中,甚至所有的东西都被当作一个文件来处理。每当我们创建套接字时,都会在文件描述符表中创建一个条目,其中包含标准i/o和标准错误以及其他详细信息。文件描述符充当指向file Table的指针,该file table包含有关要执行的操作(即读取、写入等)的信息,它还包含指向特定文件的inode表的指针,正如您可能知道的,inode包含文件的所有必要数据。

票数 10
EN

Stack Overflow用户

发布于 2018-11-21 00:32:15

套接字(描述符)和文件描述符之间没有区别。Socket只是文件的特殊形式。例如,您可以对套接字描述符使用与文件描述符相同的syscall read()和write()。

代码语言:javascript
复制
ssize_t send(int sockfd, const void *buf, size_t len, int flags);

send()和write()之间的唯一区别是标志参数的存在。标志参数等于零时,send()等同于write()。

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

https://stackoverflow.com/questions/13378035

复制
相关文章

相似问题

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