当TCP服务器在端口上执行套接字接受时,它将获得一个与该客户端一起使用的新套接字.
接受套接字对该端口仍然有效,并且可以接受该端口上的其他客户端.
为什么原始FTP规范RFC 959决定同时创建控制端口和数据端口?
是否有任何理由在类似的自定义协议中执行此操作?
在我看来,这可以在一个端口上轻松指定.
考虑到防火墙和使用FTP的NATS的所有问题,似乎单个端口会好得多.
对于一般协议实现,我认为你想要这样做的唯一原因是你可以从不同于命令的主机提供文件.
我想将文件从一台服务器上传到另一台FTP服务器,以下是我上传文件的代码,但是它会抛出一个错误:
远程服务器返回错误:(550)文件不可用(例如,找不到文件,没有访问权限).
这是我的代码:
string CompleteDPath = "ftp URL";
string UName = "UserName";
string PWD = "Password";
WebRequest reqObj = WebRequest.Create(CompleteDPath + FileName);
reqObj.Method = WebRequestMethods.Ftp.UploadFile;
reqObj.Credentials = new NetworkCredential(UName, PWD);
FileStream streamObj = System.IO.File.OpenRead(Server.MapPath(FileName));
byte[] buffer = new byte[streamObj.Length + 1];
streamObj.Read(buffer, 0, buffer.Length);
streamObj.Close();
streamObj = null;
reqObj.GetRequestStream().Write(buffer, 0, buffer.Length);
reqObj = null;
Run Code Online (Sandbox Code Playgroud)
你能告诉我哪里出错了吗?
我创建了一个小的Windows窗体应用程序,将文件上传到我们客户端的ftp站点之一.但我遇到的问题是,当我在本地计算机上运行此应用程序时,它会成功上传文件.但是,如果我在我们的服务器上运行此程序,我会收到此错误消息;
远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问该文件),在此行'objFTPRequest.GetRequestStream();'.
有人知道为什么吗?我需要配置防火墙吗?这是我的代码;
FileInfo objFile = new FileInfo(filename);
FtpWebRequest objFTPRequest;
// Create FtpWebRequest object
objFTPRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/outbox/" + objFile.Name));
// Set Credintials
objFTPRequest.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
// By default KeepAlive is true, where the control connection is
// not closed after a command is executed.
objFTPRequest.KeepAlive = false;
// Set the data transfer type.
objFTPRequest.UseBinary = true;
// Set content length
objFTPRequest.ContentLength = objFile.Length;
// Set request method
objFTPRequest.Method = WebRequestMethods.Ftp.UploadFile;
// Set buffer …Run Code Online (Sandbox Code Playgroud) 补充:我正在研究我们将要在我的工作中开发的新系统.它包括对用户进行身份验证,显示他们要下载和下载的文件.此外,如果文件不可用,则用户无法下载它们,但服务器获得所请求文件的副本,并在他可以获取文件时通过邮件通知用户.我们希望文件的大小从目前的2到50千兆字节.
我只想检查是否可以编写Web应用程序来解决问题,或者是否需要制作客户端 - 服务器解决方案.
我正在寻找一个用于SFTP文件传输的简单Java库.除此之外,我不需要任何其他功能.
我已经尝试过Zehon了,但这是令人难以置信的唠叨,我认为8个jar文件对我所需要的功能来说有点疯狂.
图书馆必须是免费的(如免费啤酒),最好是开源(不是要求).
谢谢.
我有一个Java文件扫描程序,它使用FTP扫描服务器上的目录.获取目录的文件列表并逐个下载.另一方面,在服务器上,有一个写入这些文件的进程.如果我很幸运,我不会尝试下载不完整的文件但是如何确保服务器上的写入过程是否完整且文件句柄是否已关闭,文件是否已准备好下载?
我无法控制服务器上的写入过程.此外,我没有对目录的写权限,试图获取一个写句柄,以检查是否已经打开了一个写句柄,所以这个选项不在桌面上.
是否有FTP功能解决此问题?
我想把我的所有网站都移到GitHub,以获得所有明显的好处.我不是命令行的忠实粉丝,所以我喜欢GitHub,因为它让我可以避免触及所有这些.在GitHub上设置存储库,然后将其与我的计算机同步很容易.我需要能够自动从GitHub推送到网络服务器,所以当我在本地更新主分支,与GitHub同步时,它会在网站上运行.从谷歌搜索主题似乎大多数技术要么需要命令行或看起来相当复杂.我想用大约15-20个站点(其中许多站点托管在来自不同客户端的不同服务器上)执行此操作.我想找到一个在我的技能范围内的选项,每个站点不需要2-3个小时.有人知道最好,最简单的设置方法吗?
我正在尝试使用Filezilla连接到FTP服务器.当我使用宽带时,它正在工作,但当我使用我的大学互联网时,它说:
Error: Connection timed out
Error: Failed to retrieve directory listing
Run Code Online (Sandbox Code Playgroud)
我尝试了被动和主动模式,但都是徒劳的.它连接但无法提供目录列表.
以下是活动模式的完整日志
Status: Resolving address of where2service.com
Status: Connecting to 166.62.2.1:21...
Status: Connection established, waiting for welcome message...
Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Response: 220-You are user number 22 of 500 allowed.
Response: 220-Local time is now 05:09. Server port: 21.
Response: 220-This is a private system - No anonymous login
Response: 220 You will be disconnected after 3 minutes of inactivity.
Command: USER where2service
Response: …Run Code Online (Sandbox Code Playgroud) 从远程UNIX FTP服务器下载文件后,您要验证是否已正确下载所有文件.在Windows命令提示符下,您将获得类似于"dir/s"命令的信息.FTP客户端在Windows上运行.
有没有办法将Google Drive用作FTP服务器?我的意思是我有主机,用户名和密码,使用Filezilla我可以访问GDrive文件夹,上传和下载数据,并使用许多软件自动备份.如果协议是FTP或SFTP,则不重要.
GDrive是否允许此功能?在肯定答复中,我如何获得我的凭据?
DropBox也允许这个功能吗?