2013-02-05 59 views
0

我们正在开发基于C/S的网络应用程序,在这个应用程序中,服务器需要将文件传输到客户端,并且有时会从客户端接收文件。所以在服务器应用程序中,需要为每个客户端创建一个控制套接字和许多传输套接字。如何管理控制插座和传输插座?

我的问题是我们如何创建和定义一个套接字作为控制套接字或传输套接字的角色? (以下内容被删除:服务器应用程序如何区分控制套接字和传输套接字?)。目前服务器使用监听套接字,并且对于通过accept(监听套接字)建立的所有新连接,它将它们均等地存储在数组中,最后让客户端将它们作为控制套接字或传输套接字注册到服务器(在传输文件之前,客户端需要知道它想用作控制套接字的套接字以及它想用作传输套接字的套接字)。

我不认为这是一个很好的模式来创建服务器应用程序和客户端之间的控制套接字和传输套接字。那么是否还有其他适合这类问题的模式?

回答

0

我们如何创建这个控制套接字和所有其他的传输套接字?

与创建其他套接字的方式相同。我不明白这个问题。

服务器应用程序如何区分控制套接字和传输套接字?

通过被客户告知,并记住每个客户端的某种数据结构。或者,也许你应该使用不同的监听端口来控制插座和转接插座。或者,也许传输套接字应该是FTP中的回调。

+0

1.关于第一个问题,我的意思是服务器如何创建和定义一个套接字作为控制套接字或传输套接字的角色?它是否同时创建控制套接字和传输套接字(同时)?或者是否创建控件套接字并让“控件套接字”类创建传输套接字? – Steve

+0

2.关于第二个问题,谢谢我认为你是对的,实际上这也是FileZilla OSS的工作方式。但这是否意味着服务器必须由客户端告知每个传输套接字?在创建每个传输套接字之前,必须有一些应用层握手? – Steve

+0

@StevePeng(1)正如我所说,我不明白这个问题。服务器根本不创建套接字,它接受它们。 (2)我建议你看看FTP RFC。客户端告诉服务器打开哪个端口,然后服务器打开它。 – EJP