进程可以采用如下方式打开FIFO:
fd = open ("MyFifo" , O_RDONLY);
这个系统调用内部实现的功能有:
1 创建一个I/O端点并为其分配文件描述符
2 将文件描述符绑定到外部名字“MyFifo”
3 等待,直到出现写进程
4 返回文件描述符,该文件描述符可以用于read系统调用
套接字的工作流程与此类似,不同之处在于每一步都分解为一个独立的系统调用:
socket创建端点并分配文件描述符。
bind将该套接字与外部名字关联起来,让其他进程可以引用。
listen将该套接字标识为可以接收来自其他套接字的连接。
accept阻塞等待连接。
connect连接到在accept中阻塞的套接字。
服务器端:
调用socket创建端点和文件描述符
调用bind将套接字绑定到名字上
调用listen将其标识为接收连接
调用accept阻塞直到建立一条连接。然后accept使用新的文件描述符创建第二个套接字
使用新的文件描述符在第二个套接字上进行读和写
客户端:
调用socket创建端点和文件描述符
使用服务器被绑定的名字作为参数调用connect,阻塞直到服务器接受连接
使用套接字的文件描述符进行读写数据
(套接字的具体代码在 目录 “Linux系统编程里面”)
阅读(612) | 评论(0) | 转发(0) |