TCP/IP系列基础概念(二)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/keysilence1/article/details/52416168

基础概念

I/O

阻塞I/O

阻塞I/O
应用进程从recvfrom调用开始到返回的整个时间内是阻塞的,知道recvfrom成功返回后,应用进程开始处理数据。

非阻塞I/O

非阻塞I/O
进程把一个套接字设置成非阻塞是再通知内核:当所请求的I/O操作非得把本进程投入睡眠才能完成时,不要把本进程投入睡眠,而是返回一个错误。前三次调用recvfrom时没有数据返回,因此内核转而立即返回一个EWOULDBLOCK错误。第四次调用recvfrom时已有一个数据报准备好,它被复制到应用进程缓存区,于是recvfrom成功返回。当一个应用进程像这样对一个非阻塞描述符循环调用recvfrom时,我们称之为轮询(polling)。

复用I/O

这里写图片描述
有了I/O复用(I/O multiplexing),我们就可以调用select或poll,阻塞在这两个系统调用中的某一个之上,而不是阻塞在真正的I/O系统调用上。我们阻塞于select调用,等待数据报套接字变为可读。当select返回套接字可读这一条件时,我们调用recvfrom把所读数据报复制到应用进程缓冲区。与I/O复用密切相关的另一种I/O模型是在多线程中使用阻塞式I/O。这种模型与上述模型极为相似,但它没有使用select阻塞在多个文件描述符上,而是使用多个线程(每个文件描述符一个线程),这样每个线程都可以自由地调用诸如recvfrom之类的阻塞式I/O系统调用了。

展开阅读全文

Java TCP/IP Socket网络编程系列

12-22

JavaSocket网络编程系列专题rnrn[url=http://blog.csdn.net/ns_code/article/details/14105457]【Java TCP/IP Socket】Java TCP Socket程编程[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/14128987]【Java TCP/IP Socket】Java UDP Socket编程[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/14225541]【Java TCP/IP Socket】应用程序协议中消息的成帧与解析[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/14229253]【Java TCP/IP Socket】构建和解析自定义协议消息[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/14451911]【Java TCP/IP Socket】基于线程池的TCP服务器[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/14642873]【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/15378417]【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/15545057]【Java TCP/IP Socket】基于NIO的TCP通信[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/15813809]【Java TCP/IP Socket】深入剖析socket——数据传输的底层实现[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/15939993]【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题[/url]rnrn[url=http://blog.csdn.net/ns_code/article/details/16113083]【Java TCP/IP Socket】深入剖析socket——TCP套接字的生命周期[/url]rn 论坛

没有更多推荐了,返回首页