基于IOCP的多人聊天实现?

zxy_net 2006-12-12 10:06:31
我测试一个IOCP类,这类开2个工作线程,可以方便的客户与服务器机通讯,但都是1对1通讯,我想做个多人聊天的,一个人发送数据到服务器,服务器再发送给其他人,学习一下IOCP技术,各位谁这方面有经验,讨论讨论。
是不是客户连接到服务器时,保存他的SOCKET到全局变量大数组里。然后有人发送数据时,把他发的数据,通过一个循环发送给其他人。
SOCKET[MAXNUMBER]
FOR(INT I=0;I<MAXNUMBER;I++)
{
IF(SOCKET)
SEND(DATA...);
}

我学习的这个类是国外的,韩国人写的。谁研究过。发个多人聊天的例子,或者讨论讨论。user8848@163.com

IOCP源代码 http://www.codeproject.com/internet/IOCPNet.asp

谁要是学习过,发给我一份你改的聊天代码,我知道你好面子,我要了你不能不给,你给我个简单的例子就行,太复杂的别给,你给我和你。

嘿嘿!
...全文
578 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxy_net 2007-01-19
  • 打赏
  • 举报
回复
楼上的,这个类你研究过吗.如何在用户关闭或者异常关闭的情况下扑获相应事件,做些处理.
我尝试用大数组保存用户连接信息.但是当用户关闭或者异常关闭时,不知道把代码写在哪正确.
wj19781215 2007-01-18
  • 打赏
  • 举报
回复
我做了完成端口,用堆栈管理内存,构建内存池,这可供你参考。
zxy_net 2007-01-18
  • 打赏
  • 举报
回复
谁有研究心得?
Juchiyufei 2007-01-10
  • 打赏
  • 举报
回复
:)
接分快乐.
zxy_net 2007-01-10
  • 打赏
  • 举报
回复
这个类库的在线人数不正确.
toxyboy 2006-12-19
  • 打赏
  • 举报
回复
晕到,4000人的聊天室,你也就是理论上想想够了。
zxy_net 2006-12-15
  • 打赏
  • 举报
回复
我自己想了个解决方案,就是保存客户端信息到大数组里,可以向多人发送,但是,就是不好解决客户关闭SOCKET的事件.总会串,明明是这个SOCKET发过来的,但服务器端,由于多线程问题,可能判断成其他客户端,这样造成误关闭,关闭的客户端没关闭,反而把在线的一个客户端关闭了.我感觉是线程同步问题吧.我就差这一步了,群发消息,实现了.不过我开400个客户端在本机,速度都感觉到有点慢,尽管全部发完不到1秒.我相信,假如4000客户端,甚至40000个的时候,再加网络速度的影响,聊天性能不会2秒发完所有人.总的来说我的单U单核1.6G电脑,循环60000下,不会太久,估计在10秒以内,这样也可以了.
ppzine 2006-12-15
  • 打赏
  • 举报
回复
建议多人聊天用udp,看看udp p2p,就解决了
kkisskkill 2006-12-15
  • 打赏
  • 举报
回复
我没做过。但是我想既然是多人聊天,那你聊的别人可以看到,人家说的也能看到。那发信息时候应该用到是广播的方式给局域网。
kkisskkill 2006-12-15
  • 打赏
  • 举报
回复
你可以去一VC知识库网站里面这样的聊天程序的例题很多。LZ可以去下一个看看。
zxy_net 2006-12-14
  • 打赏
  • 举报
回复
每登陆一个用户,我就保存他的SOCKET和标记,这没问题,但是,当客户端关闭的时候,在线程里的关闭事件里,总不能很正确的获得关闭机的SOCKET,总有偏移,还不固定。这样的话,在线人数总不是正确的。郁闷。
zxy_net 2006-12-13
  • 打赏
  • 举报
回复
沉了?100分啊
zxy_net 2006-12-13
  • 打赏
  • 举报
回复
如何判断一个SOCKET被客户连接使用???
zxy_net 2006-12-13
  • 打赏
  • 举报
回复
没人研究过???
MITSMI 2006-12-13
  • 打赏
  • 举报
回复
在源代码面前没有秘密
如果你觉得这个看不懂,先看看书吧
zxy_net 2006-12-13
  • 打赏
  • 举报
回复
他都把SOCKET重新封装了,带缓冲区的SOCKET,这样的话,大数组需要很大内存。是不是把真正的IP地址保存住,然后,通过IP发送到CLIENT,大侠们,拜托你们也看看这个类库吧。

给点TIPS。100分不够,再发,我分可不少哦
GDI_GTK 2006-12-13
  • 打赏
  • 举报
回复
就那样,循环发送.
zxy_net 2006-12-12
  • 打赏
  • 举报
回复
少打个字。

谁要是学习过,发给我一份你改的聊天代码,我知道你好面子,我要了你不能不给,你给我个简单的例子就行,太复杂的别给,你给我和你急。
哈哈

18,356

社区成员

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

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