免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: japleak
打印 上一主题 下一主题

[C] 求C语言做聊天服务器思路 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-05-28 21:57 |只看该作者
仔细学学,我也想做一个,赫赫

论坛徽章:
0
32 [报告]
发表于 2008-05-28 22:09 |只看该作者
千万不要用fork,用多线程,否则资源消耗巨大

论坛徽章:
0
33 [报告]
发表于 2008-05-28 22:13 |只看该作者
可以考虑使用链表表示登录的用户信息,其中一个属性为socket
建议采用p2p和服务器中继两种方式,在可能的情况下尽量p2p直连。注意,有时a虽然不能连b,但b可以直连a

论坛徽章:
0
34 [报告]
发表于 2008-05-28 23:26 |只看该作者
原帖由 zxz1984 于 2008-5-28 22:13 发表
可以考虑使用链表表示登录的用户信息,其中一个属性为socket
建议采用p2p和服务器中继两种方式,在可能的情况下尽量p2p直连。注意,有时a虽然不能连b,但b可以直连a

对于文本聊天, P2P与服务器中转相比, 优势没多少, 劣势却不少. 这也是为什么大部分的聊天工具都使用服务器中转.

论坛徽章:
0
35 [报告]
发表于 2008-05-29 09:22 |只看该作者
主要是看你的client ID怎么组织了
是数字还是email格式还是ID
我觉得还是看下开源方面的东西比较好
网络编程在这里应该属于底层的东西
把上层的先指定好了

论坛徽章:
0
36 [报告]
发表于 2008-05-29 09:45 |只看该作者

oh

SOCKET ->EPOLL-> CACHE   SERVER SIDE         

CLIENT->CACHE                    CLIENT SIDE

线程间消息队列.

多路复用.

以前见过一个人,来一个SOCKET FORK下,然后写到消息队列并阻塞.后面另外一个进程处理返回,发送. 这样做肯定是效率非常低了.
不过也不是不能用.

论坛徽章:
0
37 [报告]
发表于 2008-05-29 09:47 |只看该作者

XXX

另外如果单纯文字聊天 不用考虑P2P.没啥用. 要是视频和语音的话开销就大了。

论坛徽章:
0
38 [报告]
发表于 2008-05-29 10:07 |只看该作者

论坛徽章:
0
39 [报告]
发表于 2008-05-29 10:57 |只看该作者
原帖由 ideawu 于 2008-5-28 23:26 发表

对于文本聊天, P2P与服务器中转相比, 优势没多少, 劣势却不少. 这也是为什么大部分的聊天工具都使用服务器中转.

p2p的优势体现在多媒体传输上

论坛徽章:
0
40 [报告]
发表于 2008-05-29 12:40 |只看该作者
我曾经做过一个简单的实现 大致结构如下
           DB(mysql)
                     |
           server
              /            \
            /                \
       clientA --UDP-- clientB

server我只保存注册用户的信息 好友信息 和即时的IP和PORT
然后A登录后会得到在线好友的即时IP和PORT(比如B) 然后A和B之间自己去互相发送信息 不用server转发
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP