【高级】讨论C/S编写聊天程序

RayLynn 2005-06-13 04:36:57
在我做的过程中遇到了许多问题。
首先是性能问题。
目前我使用的是TCP协议,唯一的缺点在于,TCP的服务器端必须保持桢听状态,浪费服务器资源。
诺使用UDP协议,就不会时刻保持连接,一旦发送完信息后,就立即断开。节省服务器资源。但问题在于怎样使用UDP协议跨越网段。。

目前小弟使用TCP协议,已策划到多服务器应用,不知道是否可性。因为象类似QQ一样的聊天工具,同时上线人数可能达到1000万人。为了解决此问题,我们不可能仅用一个服务器。

在这里,我想了如下的方案:
考虑多服务器的应用

1、当客户端登陆时,首先连接默认A服务器。当该A服务器负载满时候,A服务器将B服务器的IP告诉客户端,叫客户端连接B服务器。
当完成连接后,将该客户端所连接的服务器IP,写到用户表中。就此依次类推。

2、A客户端与B客户端通讯时。首先A客户端将信息发送给自己连接的服务器。服务器根据A客户端发送的消息,来选择回送信息的
服务器(此时必须从数据库读取该用户表中的对应 服务器IP 的信息,来选择服务器 假设B客户端连接的是B服务器)。选择完回送的服务
器B,将A客户端的信息发送给B服务器,之后,B服务器来将信息发送给B客户端。



请高手门指点迷津。
现在我只剩10的分数,等我赚回,我会好好回报大家的,请相信我。
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2005-07-18
  • 打赏
  • 举报
回复
学习
RayLynn 2005-06-14
  • 打赏
  • 举报
回复
那大家有没有一个好的方案。能够告诉我吗?
songykai 2005-06-14
  • 打赏
  • 举报
回复
做一个三层的是否可行,服务器之间的通信交由应用服务器去完成,这样就不会有"由A再找B"的问题了
happyct 2005-06-14
  • 打赏
  • 举报
回复
低级。。
铖邑 2005-06-14
  • 打赏
  • 举报
回复
楼主提供的方案,服务器之间处理复杂,并不减轻服务器的负担,解决不了性能问题。
mmking33 2005-06-14
  • 打赏
  • 举报
回复
跨网段和TCP、UDP协议无关系。
TCP是可靠的,不存在数据丢失;而UDP是不可靠,可能存在丢包。
TCP是面向连接的,只需要保持住这个连接就可以随时进行CS间通信。
UDP面向非连接的,每次通信都需要明确指出通信对象。
铖邑 2005-06-14
  • 打赏
  • 举报
回复
目前我使用的是TCP协议,唯一的缺点在于,TCP的服务器端必须保持桢听状态,浪费服务器资源。
点评:UDP协议也一样要处于侦听状态,只不过TCP需要建立连接而已。

诺使用UDP协议,就不会时刻保持连接,一旦发送完信息后,就立即断开。节省服务器资源。
UDP不建立连接,没有保持连接的概念,也不会断开。

但问题在于怎样使用UDP协议跨越网段
跨越网段是IP做的事情。
铖邑 2005-06-14
  • 打赏
  • 举报
回复
目前我使用的是TCP协议,唯一的缺点在于,TCP的服务器端必须保持桢听状态,浪费服务器资源。
诺使用UDP协议,就不会时刻保持连接,一旦发送完信息后,就立即断开。节省服务器资源。但问题在于怎样使用UDP协议跨越网段

不好意思,楼主对网络SOCKET编程真是无知啊!
「已注销」 2005-06-13
  • 打赏
  • 举报
回复
QQ服务器是用的集群技术,有很多数据服务器和状态服务器
「已注销」 2005-06-13
  • 打赏
  • 举报
回复
从数据库里查询IP太浪费时间了~
UDP协议支持跨网段~
icwin 2005-06-13
  • 打赏
  • 举报
回复
up

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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