两个网络通讯的工作模式的讨论(5分)

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
两个网络通讯的工作模式的讨论

我有个 C/S 的系统,客户端要向服务器传文件.
现在我想了两种方法.
1. 服务器的一个 SocketServer 与 客户端的一个 SocketClient 对应.一对一的关系
2. 与传统服务器一样.一个 SocketServer 对应 N 个 SocketClient

从编程来说,第一个方法要简单点,但这样,如果一百个人上传,就要 100 个SocketServer 是不是很占用资源?
而第二种方法,编程上就要复杂些了.

哪个方法好些?
 
用同步阻塞方式,在服务器端给每个客户端创建一个线程
 
每种流行的模式,都是经过若干年无数程序员实践验证的。
不知道你为何觉得你说的1简单?你实际编写了程序吗?从我的理解来说,1需要更多的代码、更复杂的流程。
 
第一种方式是对资源的浪费
 
是的。我用第一种方法,用了半天就把程序写出来了。测试OK
 
第一种方式是对资源的浪费

--------------
FTP 方式也和我说的方法类似
 
[:)]谁说TFP和你说得方法类似呢?FTP的定义在RFC里面,它只定义了FTP的通讯协议和补充,具体的实现是每个软件自己的事情。呵呵
 
FTP 分两个通道。一是命令通道。 这个通道就是共用的。 一般是 21 端口。所有的 Client 都连这个端口。

在开始连文件时。它们再加一个数据通道。这个通道就是随机的。一个 Client Socket 对一个 Socket Socket .

只是有 一个主动模式与被动模式。 也就是 服务器开端口客户端连,还是客户端开端口服务器连。就这点区别。
 
如果一百个人上传,就要 100 个SocketServer ???
没那么恐怖吧?
如果真是那样的话那么对于游戏服务器来说岂不要N个ServerSocket了?
每个ServerSocket有将近65535个CustomWinSocket
每个CustomWinSocket对应一个客户端.
 
游戏服务器与 FTP 不一样.数据量,不一样.

不能用同样的方法来对比.
 
当然是Listen一个端口,就可以维护很多得客户端连接啊,这样节省资源,也不会太费尽啊。
TCP传输有很多得通讯模式,如果是EventSelect,每个线程,就只能维护64得连接,
采用异步窗口消息模型,效率可能差点,
如果每秒上千个连接,就最好是完成端口模型。
我对TCP略学习了一下,有机会,大家可以一起研究下。
 
多人接受答案了。
 
后退
顶部