linux服务器程序

lengfeng04 2009-08-11 01:18:53
最近要开发linux的服务器端程序,我对此没有太多了解,我想问一下
1、服务器端启动socket监听,一旦有客户端连接上来的时候,一般是起一个进程去对其服务,还是起一个线程来服务的?
2、一般服务器是用阻塞方式 还是用I/O复用的方式?
3、如果服务器端要等待用户输入(比如输入各种服务器端指令),是否要开个线程来启动socket监听?
4、一般服务器的并发数是多少,比如是一个网络游戏,这样需要容纳上千人同时在线,服务器能否容纳这么多socket连接呢?如果一个客户端是要起一个进程/线程,能否同时起上千个进程/线程呢?
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengfeng04 2009-08-13
  • 打赏
  • 举报
回复
非常感谢各位,小弟受教了,我自己再琢磨琢磨,呵呵
yiyemengzhou 2009-08-12
  • 打赏
  • 举报
回复
你参考unix网络编程第一卷后面的服务器/客户端编程模式
有好多种模式
而且作者也列举了各种优缺点,很好的
比如

1.服务器启动的时候启动进程池,
2.服务器启动的时候启动线程池
3.服务器启动的时候启动大量的accept()阻塞起来监听,等等。
4.最简单的。来一个请求fork()一个线程
sun007700 2009-08-12
  • 打赏
  • 举报
回复
"4、一般服务器的并发数是多少,比如是一个网络游戏,这样需要容纳上千人同时在线,服务器能否容纳这么多socket连接呢?如果一个客户端是要起一个进程/线程,能否同时起上千个进程/线程呢?"

如果用select模型最多是1024个client,当然可以修改这个参数,不过这时最好用epoll模型。
还有,没必要起上千个线程,一般一个accept线程(侦听client),一个处理线程(send和 recv)差不多就够了。
  • 打赏
  • 举报
回复
多线程+ select复用模型。

或者直接epoll.

这种模型,网上很多例子,千万别自己重新全写一遍。

http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html
yhf365 2009-08-11
  • 打赏
  • 举报
回复
显然用线程了,
进程划不来。
rzsheng 2009-08-11
  • 打赏
  • 举报
回复
1. 线程吧。
2. 复用吧。
3. 是的吧
4. 具体多少我也不知道上千个应该没问题。

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧