【问题标题】:Create a direct connection between client pc and remote frp server在客户端 pc 和远程 frp 服务器之间创建直接连接
【发布时间】:2011-04-21 09:58:41
【问题描述】:

祝大家今天好..

我正在开发一个 Asp.Net Web 应用程序,我必须在其中实现文件上传,但有点复杂:

为了更好地解释,应用程序在服务器“A”上运行..文件需要上传到完全不同的服务器“B”..

一旦客户端“C”通过站点接口上传文件,该文件必须实际上传到服务器B。

技术上我已经做到了:

  • 客户从他的电脑上选择他要上传的文件,然后点击“上传”
  • 在页面postBack期间”,服务器上传文件而不保存文件
  • 我从 FileUploas 控件中获取 fileStream 并通过 ftp 将其发送到服务器“B”;

但是,通过这样做,实际上文件被传输了两次(C -> A -> B),使得文件上传的用户体验比平时更长..

我的问题是:是否可以通过站点界面(在服务器“A”上运行)打开“C”和“B”之间的“直接”连接,以执行单次传输?显然,我应该能够在下载过程中做同样的事情..

另一种选择(至少在上传期间)应该是通过在服务器“A”上保存一个临时文件来“隐藏”双重传输,然后将其重新传输到“B”开始一个单独的任务,这样用户将能够在“第一次”上传后在网站上执行新操作。

非常感谢任何建议(即使是完全不同的解决方案,我也会评估与我的项目的“兼容性”)

提前谢谢你,

阿尔伯托

注意:我选择使用 FTP,因为客户端必须能够选择他想要放置“B”服务器的位置(他可以使用“我们的”ftp,或者,如果他有的话,在那里发送文件)和我认为 FTP 是最“兼容”和“快速设置”的解决方案,ftp 的管理方式与服务器“B”平台类似。

【问题讨论】:

    标签: asp.net http ftp file-transfer


    【解决方案1】:

    目前尚不清楚,您期望 C 能够建立什么样的连接。如果 C 可以打开到 B 的直接连接,并且如果服务器 A 具有访问 B 的凭据,则场景可以如下所示:

    1. 客户端 C 与服务器 A 建立命令通道
    2. 服务器 A 与服务器 B 建立命令通道
    3. 客户端开始准备数据传输。此时 C 向服务器 A 请求被动模式。A 立即开始准备与服务器 B 的数据传输,并向服务器 B 请求被动模式。这种 A-B 准备应完全发生在服务器 A 收到来自 C 的 PASV 命令和发送响应之间到这个命令。所以应该快速(我认为最多 2-3 秒)。
    4. 服务器 A 从服务器 B 获取要连接的地址和端口,并将此数据作为对从 C 接收的 PASV 命令的响应发送。
    5. C 将数据传输给 B。服务器 A 通过命令通道从 B 接收“传输完成”并将其发送给客户端。
    6. 现在服务器 A 可以关闭到服务器 B 的命令通道(如果需要)。

    以上要求您了解 FTP 协议的详细信息,并且很可能自己将其实现为客户端和服务器。这可能非常耗时。

    【讨论】:

    • 嗨,尤金,感谢您的回答.. 很抱歉不清楚.. 事实上,从技术上讲,我不知道应该使用哪种连接方式将 C 连接到 B,但我认为更好的选择是使用 ftp。在我的设置中,客户端是一个简单的浏览器,必须使用在服务器“A”中运行的 asp.net 应用程序,而“B”必须在“透明”中使用" 作为文件服务器的方式..我会看看 PASV 命令和命令通道(我什至不知道它们的存在,但我会尝试补救!!!).. 谢谢!
    • 澄清一下,不要把时间花在“无用”任务上(知识总是有用的):是否可以复制您在我的案例中描述的系统:-服务器 A 是我的 ASP.net 应用程序,我可以完全控制 - C 必须是通用浏览器 - B 必须是通用 FTP 服务器中的文件夹,理论上我除了知道服务器名称、用户名和密码(如果需要)之外没有任何控制权
    • @Alberto 如果 C 只是一个浏览器,那么我唯一能想到的就是让 B 运行一个 Web 服务器并将用户引导到那里进行上传(通过在新选项卡中打开一个新页面/窗户)。我精心设计的 ;) 方案在这种情况下不起作用。
    • @alberto 欢迎来到 SO。您可以通过编辑来更新您自己的问题。您可以为问题投票(赞成或反对),如果您得到满足您需求并回答了您的问题的答案,您可以将其标记为答案
    • @Eugene 再次感谢你.. 我认为,至少现在,我将实现功能“简单的方式”,使用双重传输,以防“扩展”整个项目并实现你为我设计的伟大计划!我会将答案标记为解决方案,即使它不适合我的情况!谢谢!
    猜你喜欢
    • 2015-01-19
    • 2011-05-20
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多