URN Logo
UNIX Resources » Linux » China Linux Forum » C/C++编程版 » 20 » 关于tcp server 的几个简单问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
关于tcp server 的几个简单问题
关于tcp server 的几个简单问题 - benjiam [2006-01-18 10:58 | 1,458 byte(s)]
 
Re: 关于tcp server 的几个简单问题 - hsen [2006-01-18 16:33 | 201 byte(s)]
 
Re: 关于tcp server 的几个简单问题 - benjiam [2006-01-19 18:38 | 205 byte(s)]
 
Re: 关于tcp server 的几个简单问题 - hsen [2006-01-18 16:29 | 40 byte(s)]
 
 
Re: 关于tcp server 的几个简单问题 - benjiam [2006-01-18 13:40 | 64 byte(s)]
 
Subject: 关于tcp server 的几个简单问题
Author: benjiam    Posted: 2006-01-18 10:58    Length: 1,458 byte(s)
[Original] [Print] [Top]
关于tcp server 的几个简单问题

现在在做一个IM 服务器练手 有几个问题请教

关于在线用户的问题:
因为上下线都需要检查用户 我目前采用了map<string ,user *>做法
通过string 来找user *
然后把消息传给它 。 我感觉问题很大 。
首先用户多了,效率太低。而且因为上下线都需要锁定整体。我感觉到了最后这会出现
很多线不停的锁 这个块资源
2 用户上线以后,需要检索用户是否在线。当用户的朋友表很大(我明白了M$ 为什么只准250个朋友了)
那简直就是一种灾难啊。 而且如果用户不断上下线,都需要对他所有的朋友传资料。这是会造成系统”颠簸“吧

应该采用那种数据结构做好呢?

关于线程问题
目前我用了bsd 和 linux 系统 。采用单线程单用户来做的。线程的建立有限制(主要是内存)。到后来就建立不料了。
那么应该改用那种模式比较好呢?


关于内存
bsd linux 系统每个系统有4G 空间。但是你绝对不可能申请到很多的。 我的1G ram suse 9.3 intel 32 大概只有800M
可以申请。再多就失败了。usenet 上老外说 用64位cpu 就没事情了。.... 那么代码上怎么做,可以提高呢?以后换到2G 3G
ram 的服务器以后,可以完全使用服务器的大内存呢?

关于端口
据我所知道的tcp 知识,应该最多只有6万多端口可以用 也就是60K 而已。坛子里说他们的项目争取10w 用户单机在线。
edokey 有600K 用户在线。神啊 这怎么做的?






[Original] [Print] [Top]
Subject: Re: 关于tcp server 的几个简单问题
Author: lonelyflyer    Posted: 2006-01-18 12:46    Length: 24 byte(s)
[Original] [Print] [Top]
端口和连接数不是一个东东
----
LISP - Long Incomprehensible String of Parentheses
[Original] [Print] [Top]
Subject: Re: 关于tcp server 的几个简单问题
Author: benjiam    Posted: 2006-01-18 13:40    Length: 64 byte(s)
[Original] [Print] [Top]
哦 明白了
但是主动连接只有60k 个连接 最多能连6w 个主机
[Original] [Print] [Top]
Subject: Re: 关于tcp server 的几个简单问题
Author: hsen    Posted: 2006-01-18 16:29    Length: 40 byte(s)
[Original] [Print] [Top]
既然你已经不用线程了,那你有必要去锁吗?
[Original] [Print] [Top]
Subject: Re: 关于tcp server 的几个简单问题
Author: hsen    Posted: 2006-01-18 16:33    Length: 201 byte(s)
[Original] [Print] [Top]
你应该用 hash_map<int, user *> 做一个全局的在线用户表,如果用户上线,插入这个用户,把用户状态置为需要通知好友,过一定的时间遍历一下如果有需要通知的,通知一下就行了。用户下线也用这个方法。
[Original] [Print] [Top]
Subject: Re: 关于tcp server 的几个简单问题
Author: benjiam    Posted: 2006-01-19 18:38    Length: 205 byte(s)
[Original] [Print] [Top]
hash_map<int, user *> 做一个全局的在线用户表

我目前使用map <string , user*> 做的全局表
不知道效率低多少

因为用户是用email 来登陆的
[Original] [Print] [Top]
« Previous thread
C 语言 求助
C/C++编程版
20
Next thread »
一个通用的Makefile
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:52:22, cost 0.060060977935791 ms.