Chinaunix

标题: tcp应用服务器开发经验请教? [打印本页]

作者: kacy16    时间: 2014-02-12 16:48
标题: tcp应用服务器开发经验请教?
目前正在开发一个应用服务器程序,大概有十几个左右(不超过20)的客户终端机
与该服务器连接,使用tcp协议来进行网络通信。该服务器需要长时间(几个月或1年)稳定可靠的
运行,为各客户端提供服务。服务器采用linux系统(linux2.6),客户端暂采用windows系统,

由于我对于开发稳定的产品级的网络服务程序缺乏实战的经验,所以有以下几个问题向各位高手请教,

1 服务端通信服务使用单进程多线程的架构,非阻塞通信设置。网络通信这块分三个线程来实现,
A线程为专门的连接处理线程,等待在listen的socket上的客户端连接,并把
进来的连接保存。
B线程为专门的接收处理线程,采用select方式的IO多路复用方式在Accept好的连接socket
进行接收数据,并把它放置到全局的接收数据队列。
C线程为发送处理线程,在已连接的socket上发送数据。
请问这样的架构是否合理,是否有改进的地方?

2 虽然TCP协议是可靠的通信协议,在发送时如何确定发送数据成功与否?

3 由于服务端和客户端是采用tcp上时间保持连接的方式,当由于各种原因连接意外中断时,在服务端如何确定
连接的意外中断?

4 一个稳定的产品级的网络服务程序在调用几个常用的socket的API函数时有什么需要注意的细节?

我个人也下载了nagix,libevent等开源的网络程序库看了下,但是感觉较难在短时间内学习到产品级的网络开发的

经验,所以在论坛上贴出该问题,欢迎各位高手发表高见或推荐更轻量级的tcp开源程序,谢谢!

作者: crazyhadoop    时间: 2014-02-13 00:01
看看redis吧。看看早期的版本,比如2.0左右的。
作者: kacy16    时间: 2014-02-13 09:16
谢谢crazyhadoop的建议。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2