问一下服务器端使用异步套接字还是多线程的问题

Paradin 2009-04-02 11:34:35

在做一个监控系统,服务器端的简单模型如上,每个套接字大概每一分钟就接收到一份数据(但不一定同时),想直接依赖mfc的csoket和carchive的这种异步io模型,
在CSocket::OnRecieve等函数里处理异步数据,即调用下面那个“read,process,store to db"模块,有几个疑问:

1.需不需要担心CArchive和socket的缓存大小,缓存满了新到的数据会不会丢失,还是客户端会重发?(流式套接字)
2.不用多线程是否可行(主要是这个问题)。

我设想的过程是这样的不知道对不对:
1>一旦某个socket接收到数据就调用OnReceive相应函数,在里面调用下面那个模块。
2>如果在处理socket A接收到的数据时,socket B有数据到达,此时会有一个receive消息传递给socket B, 在随后的消息循环中会取出并调用B的响应函数进一步处理数据。
3>应用程序按消息取出顺序处理各socket接收到的数据,也不会同时访问数据库(不需要处理同步)


我知道比较拙劣,也许概念上就有问题。十分感谢前辈们的指点和帮助!
...全文
178 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackcat242 2009-04-02
  • 打赏
  • 举报
回复
1.需不需要担心CArchive和socket的缓存大小,缓存满了新到的数据会不会丢失,还是客户端会重发?(流式套接字)
需要考虑处理,我记得如果缓冲区满了,archive会抛异常
2.不用多线程是否可行(主要是这个问题)。
这个看你怎么设计了,一般没有不是多线程的
  • 打赏
  • 举报
回复
1.需不需要担心CArchive和socket的缓存大小,缓存满了新到的数据会不会丢失,还是客户端会重发?(流式套接字)

缓冲区满后,新到数据会丢失.

2.不用多线程是否可行(主要是这个问题)。
做服务器段,要么用多线程,要么用IO复用模型,你自己选吧
Paradin 2009-04-02
  • 打赏
  • 举报
回复
谢谢楼上。数据少可以不用多线程么
yajyjy 2009-04-02
  • 打赏
  • 举报
回复
楼主好像是一个服务端和多个客户端进行连接吧?
缓冲区、多线程,每个socket接收到数据存放在一个链表/缓冲,用一个线程专门处理数据
coast1 2009-04-02
  • 打赏
  • 举报
回复
up
Paradin 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 blackcat242 的回复:]
1.需不需要担心CArchive和socket的缓存大小,缓存满了新到的数据会不会丢失,还是客户端会重发?(流式套接字)
需要考虑处理,我记得如果缓冲区满了,archive会抛异常
2.不用多线程是否可行(主要是这个问题)。
这个看你怎么设计了,一般没有不是多线程的
[/Quote]

谢谢

18,363

社区成员

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

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