当前位置:  技术问答>linux和unix

Linux上的客户端异步通知型Socket怎么实现?

    来源: 互联网  发布时间:2017-01-05

    本文导语:      Windows上, 提供了 WSAAsyncSelect 和WSAEventSelect, 可以让Socket有数据进来的时候, 通知程序响应, 而代码直接就过去了, 不必在此循环等待;  但在Linux上, 好像没有发现相应的函数, 而select函数, 会堵塞起来. 代码...

    Windows上, 提供了 WSAAsyncSelect 和WSAEventSelect, 可以让Socket有数据进来的时候, 通知程序响应, 而代码直接就过去了, 不必在此循环等待;  但在Linux上, 好像没有发现相应的函数, 而select函数, 会堵塞起来. 代码走到这里就过不去了, 对于客户端Socket来说, 这个效果和同步/阻塞Socket也没啥区别.
    我想写个Linux上客户端用的异步Socket, 当有数据来的时候通过事件/信号等方式通知程序, 而不要死等, 请问大虾们, 怎么实现呢?
    另外我不想新建个线程死等数据, 这个方法我不要.

|
Linux支持信号驱动的 I/O,内核通过 SIGIO 来通报进程,不过这样编程比较累而效率提高不多。

Linux下普遍的做法就是通过非阻塞I/O 配合 select or poll 来实现单进程(线程)多路复用。

如果非要用时间通知的方式,可以查查 SIGIO 信号。

|
个人感觉poll多个文件fd的单进程多路复用已经非常效率了,多开进程并不能提高poll效率。

Unix 服务器可以支持千万级的网络并发访问量,而 Windows 的 Socket 理论最大数量是4000, 为了改变这种窘境,它才推出 IOCP 这玩意,大抵也就是把线程不再挂起去等待 I/O端口的数据返回,以提高网络程序的运行效率而已。

所以IOCP这类Windows下的机制并不适用于Linux,不过也有一些人在Linux下作了些模拟的IOCP,lz可以搜搜他们的实现。

    
 
 

您可能感兴趣的文章:

  • Linux 中关于异步函数的问题
  • ACE linux下的异步IO
  • linux进程异步通信,高手请进
  • Linux下多进程实现异步编成,高手帮忙!
  • 初学者关于linux驱动异步通知的小问题
  • python实现Linux异步epoll代码
  • 请问Linux下C++编程有没有类似WSAEventSelect的异步模型
  • 请问:Linux 串口编程 非阻塞异步模式 write没有数据
  • linux环境下父进程子进程异步问题
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 对于用客户端上网的用户(客户端不支持linux)如何在linux下上网?
  • 在Linux下开发手机客户端或Pc客户端交互的服务器,需要学哪些知识?
  • linux端是服务器,客户端连接后,有时并不知道客户端断开,怎么侦测?
  • linux 能ping通客户端ip,但ping不通客户端的域名。
  • Linux网络编程(怎样实现两个客户端之间的通信)
  • Linux的BBS客户端 QTerm
  • Linux的博客客户端 Drivel
  • Linux 代理 一个客户端来就创建一个连接
  • linux客户端如何配置网络?
  • linux下用kerberos客户端加入windows域的问题
  • 求助:Linux下ftp客户端代码编写
  • linux怎样装那个锐杰认证客户端
  • Linux系统做服务器,客户端可使用windows系列的系统吗
  • Linux的Twitter客户端 Twitux
  • Linux下默认的邮件客户端是什么
  • Linux邮件客户端 Evolution
  • LINUX数据库oracle客户端安装问题
  • Linux 用occi 要安装 oracle客户端吗?
  • 求FTP客户端源程序或相关资料(C,LINUX )
  • 关于linux socket 客户端编程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用LINUX做HELIX服务器,用W2K做客户机,客户机视频点播,连接时出现问题!!!!
  • 在单位用windows客户机可在ie设置代理上网,但linux客户机不行
  • 关于linux环境下服务器 是如何获取客户端的相关硬件信息
  • 客户端是linux通过socket编程实现服务器端win平台接收?
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • ~~双网卡WinXP设置为共享上网,为什么Linux客户机不能上网~~
  • 请问有没有Linux下SOCKET服务端和客户端的接口函数!!
  • linux客户端能不能使用x界面呀
  • 高分请教:如何在linux上建vpn的客户端!
  • 客户端访问Linux作为服务器的网站,flash无法显示。
  • 哪里有中兴认证客户端linux版本下载?
  • 大侠,求助!!LINUX下TCP套接字编程中客户端出现段错误
  • 如何在远程linux客户端上运行gui程序
  • 虾米电台Linux客户端 xmradio
  • 百度云linux客户端
  • 锐捷认证Linux客户端 RuijieClient
  • 如何使用LINUX为不同子网的WIN98客户端不同的应用程序做代理?给分100
  • linux下FTP服务器与客户端的C语言实现
  • tcp/ip 服务端响应linux客户端问题
  • Linux下的QQ客户端 OpenQ
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3