加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 处理客户端连接的最有效方法(套接字编程)

发布时间:2020-12-16 03:35:12 所属栏目:百科 来源:网络整理
导读:对于我在互联网上看到的 Linux / Unix套接字教程的每个教程和示例,服务器端代码总是涉及一个无限循环,每次都检查客户端连接. 例: http://www.thegeekstuff.com/2011/12/c-socket-programming/ http://tldp.org/LDP/LG/issue74/tougher.html#3.2 是否有更有
对于我在互联网上看到的 Linux / Unix套接字教程的每个教程和示例,服务器端代码总是涉及一个无限循环,每次都检查客户端连接.
例:

http://www.thegeekstuff.com/2011/12/c-socket-programming/

http://tldp.org/LDP/LG/issue74/tougher.html#3.2

是否有更有效的方法来构造服务器端代码,使其不涉及无限循环,或以一种占用较少系统资源的方式编写无限循环?

解决方法

这些例子中的无限循环已经很有效.对accept()的调用是一个阻塞调用:在客户端连接到服务器之前,函数不会返回.调用accept()函数的线程的代码执行暂停,并且不占用任何处理能力.

将accept()视为对join()的调用,或者像对互斥锁/ lock / semaphore的等待一样.

当然,还有许多其他方法来处理传入连接,但那些其他方式处理accept()的阻塞性质.此功能很难取消,因此存在非阻塞替代方案,允许服务器在等待传入连接时执行其他操作.一个这样的选择是使用select().其他替代方案的可移植性较差,因为它们涉及低级操作系统调用,通过回调函数,事件或操作系统处理的任何其他异步机制来发出连接信号……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读