讨论一下类似QQ的多人聊天

wang7300 2011-07-20 02:41:27
请问大家多人聊天的服务器是什么原理
是为每一个登陆的用户都开一个线程监听吗?
最近正在研究一个聊天软件
ClientSocket = new Socket[100];
ClientThread = new Thread[100];
是这样吗?感觉不是很爽,大家有什么高见?
...全文
92 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
itrefer 2011-07-20
  • 打赏
  • 举报
回复
一个单独的监听线程 能保证ip和端口唯一 方便发送端发送
收到消息后使用另外的线程做数据包的处理

使用此模式传文件都没有问题
t69490741 2011-07-20
  • 打赏
  • 举报
回复
不知道,帮你顶一下,我也想了解下,最好设计详细点
小笨熊 2011-07-20
  • 打赏
  • 举报
回复
为啥一定要用socket呢?换种服务器就行了哇。Tcp不稳定
SuperTyro 2011-07-20
  • 打赏
  • 举报
回复
如果用ClientSocket 这种方式来做 应该好像有个什么等待信息的方法。。。。
wang7300 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 supertyro 的回复:]
有一个线程就够了,你会发现当数据量上来的时候,是要避免做即时更新的,比如你用QQ会偶尔发现有人的说话时间比你晚但是却显示在你的上面,你会发现当QQ的用户量越来越大的时候即时性就越来越不好了。
[/Quote]
线程不是为了防止receive堵塞吗?
while (true)
{
ClientSocket[0].Receive(……);
ClientSocket[1].Receive(……);
……
}
这样也行不通呀。
wang7300 2011-07-20
  • 打赏
  • 举报
回复
有朋友能用20个字以上的回复详细说明一下吗?
SuperTyro 2011-07-20
  • 打赏
  • 举报
回复
有一个线程就够了,你会发现当数据量上来的时候,是要避免做即时更新的,比如你用QQ会偶尔发现有人的说话时间比你晚但是却显示在你的上面,你会发现当QQ的用户量越来越大的时候即时性就越来越不好了。
itrefer 2011-07-20
  • 打赏
  • 举报
回复
所谓的一个监听 说的是本地
hhwydwfg 2011-07-20
  • 打赏
  • 举报
回复
DDD
hhwydwfg 2011-07-20
  • 打赏
  • 举报
回复
DDD
wang7300 2011-07-20
  • 打赏
  • 举报
回复
一个线程不是只能监听一个socket吗? 不明白……
yelang 2011-07-20
  • 打赏
  • 举报
回复
只用一个就可以,用异步通信。
itrefer 2011-07-20
  • 打赏
  • 举报
回复
同一个线程转发

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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