使用WinInet VB.net测试与FTP服务器的连接 我已经搜索了很多站点,大部分都是用C++或VB6搜索。
我想测试我的代码是否能够使用winInet API Vb.net连接到FTP服务器 首先,我知道如何声明wininet.dll 但我不知道如何知道连接已经连接 这是我的密码:使用WinInet VB.net测试与FTP服务器的连接 我已经搜索了很多站点,大部分都是用C++或VB6搜索。,vb.net,ftp,wininet,Vb.net,Ftp,Wininet,我想测试我的代码是否能够使用winInet API Vb.net连接到FTP服务器 首先,我知道如何声明wininet.dll 但我不知道如何知道连接已经连接 这是我的密码: Imports System.Net Imports System.IO Imports System.Net.Sockets Public Class Form1 Public Declare Function internetopen Lib "wininet.dll" Alias "InternetOpenA" _
Imports System.Net
Imports System.IO
Imports System.Net.Sockets
Public Class Form1
Public Declare Function internetopen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal lpszAgent As String, _
ByVal dwAccessType As Long, _
ByVal lpszproxyName As String, _
ByVal lpszproxyBypass As String, _
ByVal dwflags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal HINet As Integer) As Integer
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Integer, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Integer) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Integer, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Integer, ByVal lFlags As Integer, ByVal lContext As Integer) As Integer
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Integer, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Integer, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Integer, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
Private Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, ByVal lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
Private Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, ByVal lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszCurrentDirectory As String, ByVal lpdwCurrentDirectory As Long) As Long
Private Structure FILETIME
Dim dwLowDateTime As Long
Dim dwHighDateTime As Long
End Structure
Private Structure WIN32_FIND_DATA
Dim dwFileAttributes As Long
Dim ftCreationTime As FILETIME
Dim ftLastAccessTime As FILETIME
Dim ftLastWriteTime As FILETIME
Dim nFileSizeHigh As Long
Dim nFileSizeLow As Long
Dim dwReserved0 As Long
Dim dwReserved1 As Long
Dim cFileName As String
Dim cAlternate As String
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim INet As Long
Dim INetConn As Long
Dim RC As Boolean
Dim FileData As WIN32_FIND_DATA
Dim FileList As String
Dim MAX_PATH As Long = 0
Try
INet = internetopen("FTP_Backup", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "FTP_SITE", 0, "USER", "PASSWORD", 1, 0, 0)
RC = FtpGetFile(INetConn, "/public_html/install.log", "D:\", False, 0, 0, 0)
If RC Then
MsgBox("Succed")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
InternetConnect()如果连接成功,则返回会话句柄,否则返回NULL。因此,要测试连接是否已连接,请在尝试连接后进行检查
Try
INet = internetopen("FTP_Backup", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "FTP_SITE", 0, "USER", "PASSWORD", 1, 0, 0)
If (INetConn = NULL) then
'Throw an error, we have failed to connect
End If
RC = FtpGetFile(INetConn, "/public_html/install.log", "D:\", False, 0, 0, 0)
If RC Then
MsgBox("Succed")
End If
Catch ex As Exception
MsgBox(ex.ToString)
Finally
InternetCloseHandle(INet)
End Try
另外,如果您没有清理web调用,请致电InternetCloseHandle进行清理。我不确定FtpGetFile是否会失败,因为您需要将文件名作为3参数传递。D:\不是本地创建文件的有效名称。它应该类似于D:\+localFileName。请回答1个问题。有:INet=internetopen(“FTP\u备份”,1,vbNullString,vbNullString,0)我想知道什么是“FTP\u备份”?我从现场得到的。所以我真的不知道它是什么is@LeonardFebrianto如果你用谷歌搜索API,你会发现很多关于它的信息。InternetOpen()中的第一个参数是指定给HTTP协议的代理。换句话说,网站/服务器知道它在和什么说话。