tcp应用服务程序开发经验请教?

kacy16 2014-02-12 06:16:21
目前正在开发一个应用服务器程序,大概有十几个左右(不超过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开源程序,谢谢!
...全文
830 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdleek 2014-02-24
  • 打赏
  • 举报
回复
没做过linux下的开发,只能帮你顶~
kacy16 2014-02-24
  • 打赏
  • 举报
回复
谢谢各位的经验和指点,希望各位继续发表高见,谢谢!
Johnblx 2014-02-24
  • 打赏
  • 举报
回复
学习了,最近也在尝试写一些linux下的server 代码, 也使用了TCP,多线程。
oyljerry 2014-02-24
  • 打赏
  • 举报
回复
2,3,服务端增加心跳包机制等来检测客户端掉线
翅膀又硬了 2014-02-24
  • 打赏
  • 举报
回复
(1)B类型的线程可以有多个。 发送数据也在B类的线程里面实现。既然用select接收数据了,发送数据为什么不select了? (2)通过长度等的验证,超时判断之类的 (3)检查错误码,比如接收数据长度返回-1,或者返回0时 检查一下 (4)。。。。。。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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