Unix Network Programming {Nonblocking IO}

本文介绍了在Socket编程中如何通过设置非阻塞模式和使用Select/Epoll等技术来解决Connect、Recv和Send操作的超时问题。探讨了不同系统下如Solaries和FreeBSD对于高效I/O的支持技术,并解释了非阻塞模式下如何实现Connect操作的超时。

/dev/poll和kqueue都是类似于epoll的技术,解决select/poll的效率问题,分别是Solaries和FreeBSD的技术

Connect超时时间是由系统决定的,recv和send的超时可以 SO_RCVTIMEO and SO_SNDTIMEO 决定,select和epoll可以设置超时时间。当然这都是针对block的socket的。

fcntl 设置non block。那么accept,connect,read,write都是不会等待资源到位的,所以要先用select/epoll检查是否符合条件。这就是我以前程序对connect的socket在连接成功之后再设置成non block的解释。 要想设置conect的超时时间可以通过设置它为non blcok,connect如果返回EINPROGRESS就加上select(time)的方式实现,否则就是成功了。

UNIX Network Programming Volume 2》(Unix网络编程卷2英文版,djvu格式,带绿色小巧的阅读器) 原书名: UNIX Network Programming Volume 2:Interprocess Communications 2nd ed. 原出版社: Prentice Hall/Pearson 作者: W.Richard Stevens preface part 1. introduction chapter 1. introduction 1.1 introduction 3 1.2 processes, threads, and the sharing of information 5 1.3 persistence of ipc objects 6 1.4 name spaces 7 1.5 effect of fork, exec, and exit on ipc objects 9 1.6 error handling: wrapper functions 11 1.7 unix standards 13 1.8 road map to ipc examples in the text 15 1.9 summary 16 chapter 2. posix ipc 2.1 introduction 19 2.2 ipc names 19 2.3 creating and opening ipc channels 22 2.4 ipc permissions 25 2.5 summary 26 .chapter 3. system v ipc 3.1 introduction 27 3.2 key_t keys and ftok function 28 3.3 ipc_perm structure 30 3.4 creating and opening ipc channels 30 3.5 ipc permissions 32 3.6 identifier reuse 34 3.7 ipcs and ipcrm programs 36 3.8 kernel limits 36 3.9 summary 38 part 2. message passing chapter 4. pipes and fifos 4.1 introduction 43 4.2 a simple client--server example 43 4.3 pipes 44 4.4 full-duplex pipes 50 4.5 popen and pc1ose functions 52 4.6 fifos 54 4.7 additional properties of pipes and fifos 58 4.8 one server, multiple clients 60 4.9 iterative versus concurrent servers 66 4.10 streams and messages 67 4.11 pipe and fifo limits 72 4.12 summary 73 chapter 5. posix message oueues 5.1 introduction 75 5.2 mq_open, mq_c1ose, and mq_un1ink functions 76 5.3 mq_getattr and mq_setattr functions 79 5.4 mq_send and mq_receive functions 82 5.5 message queue limits 86 5.6 mq_notify function 87 5.7 posix realtime signals 98 5.8 implementation using memory-mapped i/o 106 5.9 summary 126 chapter 6. system v message queues 6.1 introduction 129 6.2 msgget function 130 6.3 msgsnd function 131 6.4 msgrcv function 132 6.5 msgctl function 134 6.6 simple programs 135 6.7 client-server example 140 6.8 multiplexing messages 142 6.9 message queues w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值