【问题标题】:How to manager control sockets and transfer sockets?如何管理控制套接字和传输套接字?
【发布时间】:2013-02-05 05:57:28
【问题描述】:

我们正在开发一个基于 C/S 的网络应用程序,在这个应用程序中服务器需要向客户端传输文件,有时还需要从客户端接收文件。所以在服务端应用程序中,它需要为每个客户端创建一个控制套接字和许多传输套接字。

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

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

【问题讨论】:

    标签: linux sockets networking


    【解决方案1】:

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

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

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

    由客户告知,并在每个客户的某种数据结构中记住它。或者,也许您应该为控制套接字和传输套接字使用不同的侦听端口。或者,传输套接字应该是 FTP 中的回调。

    【讨论】:

    • 1.关于第一个问题,我的意思是服务器如何创建和定义一个套接字作为控制套接字或传输套接字的角色?它是否平等地(同时)创建控制套接字和传输套接字?还是它创建控制套接字并让“控制套接字”类创建传输套接字?
    • 2.关于第二个问题,谢谢我觉得你是对的,其实FileZilla OSS也是这样。但这是否意味着每个传输套接字都必须由客户端告知服务器?在创建每个传输套接字之前必须进行一些应用层握手吗?
    • @StevePeng (1) 正如我所说,我不明白这个问题。服务器根本不创建套接字,它接受它们。 (2) 我建议你好好看看 FTP RFC。客户端告诉服务器打开哪个端口,然后服务器打开它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2017-06-23
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多