张无忌请进!(300分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
本人准备开发一个P2P应用项目,现遇到了一些问题希望能和您进行深入的探讨。

项目要求:
1。不论客户端采用何种上网方式,均能可靠的连接上服务器并与服务器互通信息。
2。服务器端能可靠应对至少3000到2万个用户的连接。

基本设计思想:
1。客户端连接上服务器端,经验证用户身份后,将自己的共享文件列表发送到服务器端。
2。客户开始搜索文件列表(自己共享的除外)。
3。服务器在接到该客户端的搜索请求后,将符合条件的文件列表和共享方IP地址发送给该客户端。
4。客户端建立从接收到的文件列表中选择一个文件准备进行下载。此时,该客户端与共享方建立连接,并向其发出下载请求。
5。共享客户接收到下载请求后,开始向请求方发送指定文件。

请问:
A方法。
服务器端使用TServerSocket阻塞方式,为每个用户连接建立一个线程;
客户端使用一个TClientSocket非阻塞方式与服务器通信,并内建一个TServerSocket和一个TClientSocket用于文件传输。

B方法。
服务器端使用TServerSocket非阻塞方式,利用自定义协议或指令集应对每个用户连接;
客户端使用一个TClientSocket非阻塞方式与服务器通信,并内建一个TServerSocket和一个TClientSocket用于文件传输。

C方法。
使用Delphi7中的Indy组件。

D方法。
客户端与服务器采用UDP协议进行通信。
客户端与客户端采用TClientSoket和TServerSocket进行文件的收发。

请问
1。我的设计思想是否适用该项目,如不适用为什么?请提出您的意见。
2。以上3个方法哪一个更适用于该项目,实际应用中可能出现什么问题。请提出您的意见。
3。TServerSocket在理想的硬件环境下,最大可靠连接数量是多少。
4。如果这个项目请您开发,您会怎么做?



 
附带一个问题:
象“联众”那样的模块化设计在Delphi中怎么实现?它使用的是什么机制?
 
要是我做,就不用任何控件,用API写,完成端口来处理,4~8个线程处理所有的连接,
我手头上的这类的代码很多,
 
楼主干脆把无忌从俺们公司挖走算了,呵呵.
 
如果能发给我一个比较清晰的例程(最好有注释),本人将不胜感谢!
netfreeman@sohu.com
netfreeman@netease.com
哪一个都可以。
 
能否推荐几本关于Delphi网络编程的好书?
 
<windows网络编程>
 
能就我的问题给一个详细的解答吗?我可是挂的“专家门诊”!!!
 
同意张无忌。
如果我写也用API,C<->S:用一个端口号,主端采用完成端口。C<->C用另一个端口号,但主端肯定不能用完成端口,而且需要设定连接数限制。不过全部使用TCP会不会增加系统开销?
客户端需要运行一个客户端程序才能供另的客户端下载。这个程序显然需要两块:一块为无窗口部分,或者最多只需要一个托盘通知,只供与服务器交换数据,这样,当没有连接的时候,系统开销会很低。而当有客户需要连接下载的时候,或者增删共享内容的时候,或者需要浏览其它客户端数据的时候则显示窗口化的界面。
 

LeeChange与张无忌的公司真好。
上班时间可以在网上泡。
 
注意模块的划分
祝你成功
 
to xywen,
如果双方都在网关背后,不能直接通信,那么怎么建立可靠连接呢??
 
QQ的服务器带的用户很多,所以采用UDP的通信方式,
占用的资源更少, 可以同时为更多的用户服务

当然,使用TCP方式,传送数据的效率和速度都会比较好
 
呵呵,服务器端放在UNIX上!
 
张无忌: 能否给我一个完成端口的例子?
最好有服务器端和客户端!多谢!
我的贴子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1898852
 
多人接受答案了。
 
后退
顶部