栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Unix域套接字如何区分多个客户端?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unix域套接字如何区分多个客户端?

如果创建

PF_UNIX
类型为的套接字
SOCK_STREAM
并接受其上的连接,则每次接受连接时,都会得到一个新的文件描述符(作为
accept
系统调用的返回值)。该文件描述符在客户端进程中从文件描述符读取数据并将数据写入文件描述符。因此,它的工作方式就像TCP
/ IP连接一样。

没有“
unix域协议格式”。不需要这样,因为不能通过网络连接将Unix域套接字连接到对等方。在内核中,代表您的

SOCK_STREAM
Unix域套接字末端的文件描述符指向一个数据结构,该数据结构告诉内核哪个文件描述符位于连接的另一端。当您将数据写入文件描述符时,内核会在连接的另一端查找文件描述符,并将数据附加到该其他文件描述符的读取缓冲区。内核不需要将数据放入带有描述其目的地的标头的数据包中。

对于

SOCK_DGRAM
套接字,您必须告诉内核应该接收数据的套接字的路径,并使用该路径查找该接收套接字的文件描述符。

如果在连接到服务器套接字之前(或者在使用来发送数据之前)将路径绑定到客户端套接字

SOCK_DGRAM
,则服务器进程可以使用
getpeername
(for
SOCK_STREAM
)获取该路径。对于a
SOCK_DGRAM
,接收方可以
recvfrom
用来获取发送套接字的路径。

如果不绑定路径,则接收过程将无法获得唯一标识对等方的ID。至少,不是在我正在运行的Linux内核上(

2.6.18-238.19.1.el5
)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号