11.1.2 套接字函数

11.1.2  套接字函数

UNIX域的套接字函数和以太网套接字(AF_INET)的函数相同,但是当用于UNIX域套接字时,套接字函数有一些差别和限制,主要有如下几条。

q      使用函数bind()进行套接字和地址的绑定的时候,地址结构中的路径名和路径名所表示的文件的默认访问权限为0777,即用户、用户所属的组和其他组的用户都能读、写和执行。

q      结构sum_path中的路径名必须是一个绝对路径,不能是相对路径。

q      函数connect()使用的路径名必须是一个绑定在某个已打开的UNIX域套接字上的路径名,而且套接字的类型也必须一致。下列情况将出错:(a)该路径名存在但不是一个套接字;(b)路径名存在且是一个套接口,但没有与该路径名相关联的打开的描述字;(c)路径名存在且是一个打开的套接字,但类型不符。

q      用函数connect()连接UNIX域套接字时的权限检查和用函数open()以只写方式访问路径名完全相同。

q      UNIX域字节流套接字和TCP套接字类似:它们都为进程提供一个没有记录边界的字节流接口。

q      如果UNIX域字节流套接字的connect()函数发现监听套接字的队列已满,会立刻返回一个ECONNREFUSED错误。这和TCP有所不同:如果监听套接字的队列已满,它将忽略到来的SYNTCP连接的发起方会接着发送几次SYN重试。

q      UNIX域数据报套接字和UDP套接字类似:它们都提供一个保留记录边界的不可靠的数据服务。

q      UDP套接字不同的是,在未绑定的UNIX域套接字上发送数据报不会给它捆绑一个路径名。这意味着,数据报发送者除非绑定一个路径名,否则接收者无法发回应答数据报。同样,与TCPUDP不同的是,给UNIX域数据报套接字调用connect()不会捆绑一个路径名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值