socket的工作模式

原创 2001年08月19日 15:27:00
 

socket的工作模式
主页 体系结构,函数简介 简单的C/S模型 socket的工作模式常见的程序片断 网络应用程序设计 推荐书目 习题

 

阻塞模式

是socket的缺省方式,也是最常用的方式,即函数阻塞直到调用完毕。可参见前面的例子

可能造成阻塞的函数有:connect()、accept()、读写函数、select()、poll()、gethostbyname()等。

<?XML:NAMESPACE PREFIX = V /><?XML:NAMESPACE PREFIX = O />new_pa6.jpg

 

非阻塞模式

程序调用可能造成阻塞的函数时,如果会发生阻塞,这些函数返回-1并将errno设置为EAGAIN或EWOULDBLOCK,程序可继续向下运行。可能阻塞的函数对应的任务完成,则再次调用该函数时就返回0表示运行结束。

非阻塞模式可以避免程序死锁,但是需要程序不断检查各个可能阻塞的函数的状态,当一个应用程序使用了非阻塞模式的套接字,它需要使用一个循环来不听的测试是否一个文件描述符有数据可读(称做polling)。应用程序不停的polling内核来检查是否I/O操作已经就绪。这将是一个极浪费CPU资源的操作,因此不能实际应用。一般非阻塞模式是与同步I/O模式共同使用的。

new_pa4.jpg

进入非阻塞模式的方法,请参见函数说明

 

I/O多路复用(同步I/O模式)

使用select()、poll()等函数实现对多个socket的同步I/O操作。它能同时等待多个socket描述符,而这些socket描述符其中的任意一个进入读就绪/写就绪/出错状态,select()函数就可以返回。请参见函数说明程序

new_pa5.jpg

 

信号驱动I/O

new_pa7.jpg

 

 

异步I/O

new_pa8.jpg 

Windows网络编程:阻塞模式下的Socket编程

Windows Socket是从UNIX Socket继承发展而来,在写本博客时最新的版本是2.2。进行Windows网络编程,你需要在你的程序中包含WINSOCK2.H或MSWSOCK.H,同时你需...
  • liyuefeilong
  • liyuefeilong
  • 2015年07月25日 17:09
  • 1521

Socket 阻塞与非阻塞模式

阻塞模式 Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式...
  • liang08114
  • liang08114
  • 2016年02月17日 10:53
  • 2114

socket的概念和原理

Socket 1     socket概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接...
  • lvyuan30276
  • lvyuan30276
  • 2015年02月16日 18:47
  • 1842

网络编程(2)Socket同步非阻塞工作模式

同步非阻塞模式比前面说的那个同步阻塞模式要高些,虽然高得有限.在这种模式下,send或recv函数会设为MSG_DONTWAIT, 即非阻塞,即便没有值,就略过继续做后面的事。比如有多个socket时...
  • xcltapestry
  • xcltapestry
  • 2014年02月13日 23:20
  • 1605

网络编程(1)跨平台的Socket同步阻塞工作模式例子

同步阻塞是很经典的一种模式,也常是学习Socket编程的人弄的第一个例子。在这种模式下,Socket设置为阻塞模式,当程序中的Socket没有完成I/O操作时,进程或线程会进入等待状态,直到操作完成或...
  • xcltapestry
  • xcltapestry
  • 2014年02月13日 22:43
  • 2497

socket几种工作模式

阻塞模式 是socket的缺省方式,也是最常用的方式,即函数阻塞直到调用完毕。可参见前面的例子。 可能造成阻塞的函数有:connect()、accept()、读写函数、select()、p...
  • HMSIWTV
  • HMSIWTV
  • 2012年09月03日 11:08
  • 1042

socket工作模式

阻塞模式 是socket的缺省方式,也是最常用的方式,即函数阻塞直到调用完毕。可参见前面的例子。 可能造成阻塞的函数有:connect()、accept()、读写函数、select()...
  • hejianhua
  • hejianhua
  • 2012年08月06日 11:21
  • 1944

C++网络编程例子说明异步非阻塞Socket的基本原理和工作机制

  • 2010年07月27日 23:15
  • 28KB
  • 下载

【工作笔记】Socket、TCP到底是什么,我可以用Python来做实验吗?

Socket中文是套接字。这个翻译总感觉误人子弟,至少大一大二时的我就看不懂,直到现在才明白。其实Socket本质就是对网络传输行为的封装,通过这个封装我们可以无视网路层、链路层和传输层的是怎么做的。...
  • sundy_1995
  • sundy_1995
  • 2017年03月27日 14:18
  • 387

TCP/UDP的套接字Socket通信工作流程

一.面向连接的套接字Socket通信工作流程为了实现服务器与客户机的通信,服务器和客户机都必须建立套接字。服务器与客户机的工作原理可以用下面的过程来描述。 1.服务器先用 socket 函数...
  • u010297828
  • u010297828
  • 2015年05月15日 09:56
  • 1919
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:socket的工作模式
举报原因:
原因补充:

(最多只允许输入30个字)