问一个多线程发送的问题

gooddot 2003-11-22 05:10:34
请问大家,下面那种发送方式更好一点啊:

方式一:为每个连接建立一个发送线程;在每个发送线程中发送定长的数据
方式二:记录下每个连接的SOCKET;然后在一个线程中分别向各个连接发送定长的数据
数据大概200字节左右;
...全文
32 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mailxt 2003-11-22
  • 打赏
  • 举报
回复
如果要使客户端受到的数据同步的话,就用第二个,否则还是用第一个比较好。否则当客户端速度相差比较大时低速客户端会极大的影响性能。
sevencat 2003-11-22
  • 打赏
  • 举报
回复
你可能是想等所有的都发完再发下一个包。

这里还有一个办法。在异步读写的时候,先把总共要发送的客户放到一个值里面。如
m_CLientNum;
然后select里面一个写完了后就--,假如多线程的话要注意不能直接用--,++.
完成端口和重叠端口也是这样的。
每--后检查一下值,假如为零的话就可以下一轮读写了。
sevencat 2003-11-22
  • 打赏
  • 举报
回复
异步读写。

第二个花的时间无法掌握。因为是TCP,有时候是会阻塞的。

第一个多线程也是一个好主意。就是效率不如异步读写的好。

还有SELECT也可以用用。
不过都有一个麻烦。那就是有可能有的发了五个包,有的只发了一个包。这种情况你怎么处理?
gooddot 2003-11-22
  • 打赏
  • 举报
回复
我指的这两种方式都是在服务器端
gooddot 2003-11-22
  • 打赏
  • 举报
回复
主要考虑到一个速度原因:
如果有1000个用户连接,那么方式二从开始发送,到最后一个用户接收,到底要多少时间呢?
时间太长可不行;
如果用方式一的话是不是耗时会短一些,谁能告诉我到底那种方式快些??
sevencat 2003-11-22
  • 打赏
  • 举报
回复
TCP第二种直接用重叠模型吧。直接一发得了。
StormRainbow 2003-11-22
  • 打赏
  • 举报
回复
是不是多线程与客户端还是服务器没关系,客户机也可以在线程中接收发送数据。如果建立的连接不多,还是方式一好些。
danfeng 2003-11-22
  • 打赏
  • 举报
回复
各有各的好处 这具体要看你的程序的要求了
比如 如果你采用tcp那么如果你采用方式二就不可避免的要处理socket的阻塞问题 当然这也是有解决办法的 采用异步模型就可以解决 不过相对来说比较麻烦一点 ~~

msgsnd 2003-11-22
  • 打赏
  • 举报
回复
楼上的说得让我搞不明白。一般只有服务器端才是多线程的,服务器端有一个代表客户的socket,他实现了多线程啊。
xiaohyy 2003-11-22
  • 打赏
  • 举报
回复
如果是客户端,方式一就可以了。。

18,356

社区成员

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

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