一、为什么网络无法连接?
可能原因如下:
1、网址错误,特别是对于ipv4用数字表示时,错一个数字即错;
2、验证出错,检查用户名与密码;
3、服务器拒绝,有些服务器设置了限制,比如5分钟内3次密码错误即进行锁定IP,禁止登录。
二、“基础协议出错,服务器协议冲突”
可能原因如下:
2、流读写错误。例如:刚创建的请求流,却对这个流进行读操作。
三、服务器认为命令无效
可能原因如下:
1、下载时,服务器上无此文件;
2、上传时,服务器目录文件设置错误。最常见的就是设置为目录而不是文件。
因为本地机一般都是把文件放进“目录”。但是FTP上传却是把本地文件上传到“服务器文件”!
例如下面就是错误的:
三、上传程序死机状态,无法查出原因
可能原因:
1、上传文件较大,等待上传时间较长(可以较小文件进行测试是否死机)
可以用线程或者doevents来消减这种情况。
2、请求流没有关闭,程序一直循环,或者响应流后直接退出程序。
另一个就是文件流最好关闭,因为一般情况,不关闭,流还在缓冲中,没进行设备,易丢失。
- Imports System.Net
- Imports System.IO
- Public Class Form1
- Private Sub btnFtp_Click(sender As Object,e As EventArgs) Handles btnFtp.Click
- Dim frq As FtpWebRequest,frp As FtpWebResponse
- Dim st As Stream,fs As FileStream
- Dim byt(1024) As Byte,intCount As Integer
- Try
- frq = CType(WebRequest.Create(txtFtp.Text),FtpWebRequest)
- frq.Credentials = New NetworkCredential(txtUser.Text,txtPassword.Text)
- frq.Method = WebRequestMethods.Ftp.UploadFile
- frq.KeepAlive = True
- st = frq.GetRequestStream()
- fs = New FileStream(txtFile.Text,FileMode.Open,FileAccess.Read)
- Do While True
- intCount = fs.Read(byt,1024 + 1) '读文件流
- If intCount > 0 Then
- st.Write(byt,intCount) '写入请求流
- Else
- Exit Do
- End If
- Loop
- st.Close() '========================1、特别重要:发出请求流前须必须关闭
- fs.Close() '========================2、文件缓存原因,最好关闭
- frp = CType(frq.GetResponse,FtpWebResponse) '=========3、
- frp.Close()
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- MsgBox("完成!")
- End Sub
- End Class