socket的工作模式

 

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

 

阻塞模式

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

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

 

非阻塞模式

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

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

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

 

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

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

 

信号驱动I/O

 

 

异步I/O

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SuperSocket是一个轻量级的可扩展的Socket开发框架,可用来构建一个服务器端Socket程序,而无需了解如何使用Socket,如何维护Socket连接,Socket是如何工作的。该项目使用纯C#开发,易于扩展和集成到已有的项目。只要你的已有系统是使用.NET开发的,你都能够使用SuperSocket来轻易的开发出你需要的Socket应用程序来集成到你的现有系统之中。 SuperSocket具有如下特点: 简单易用,只需要几个类就能创建出健壮的Socket服务器端程序 性能优良, 稳定可靠 支持各种协议, 内置的协议解析工具让你把实现通信协议这种复杂的工作变得很简单 自动支持SSL/TLS传输层加密 强大,灵活而且可扩展的配置让你开发Socket服务器省时省力 支持多个socket服务器实例运行, 而且支持多个服务器实例的隔离 SuperSocket能以控制台或者Windows服务形式运行。一个脚本就能将SuperSocket安装成服务 灵活的日志策略能够记录大部分socket活动 支持UDP 支持IPv6 支持Windows Azure 支持Linux/Unix操作系统(通过Mono 2.10或以上版本) 内置可直接使用的Flash/Silverlight Socket策略服务器 SuperSocket v1.6.5 更新日志: 修复NuGet包中错误的log4net引用版本号; 增加高版本TLS加密的支持; 增加配置热更新功能; 改进服务器实例停止顺序; 支持指定Active Connect本地端口的的功能; 支持Active Connect的本地端口复用; 改进进程级别隔离模式下的配置文件的读取,使其支持读取SuperSocket之外的配置节点,如appSetting和connectionString等等; 修复了性能计数器在bootstrap停止时抛出的异常; 修复了发送队列关于"索引超出范围"的异常; 为ServerManager做出一些改进;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值