⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wininet.bas

📁 本书源码主要针对目前流行的FTP、HTTP、E-mail、Telnet、ICMP、Modem串口通信编程、拨号网络编程等内容进行详细的讲解
💻 BAS
字号:
Attribute VB_Name = "modWinInet"
Option Explicit
Public Const MAX_PATH = 260
Public Const NO_ERROR = 0
'在WIN32_FIND_DATA结构中的文件查找属性常数
Public Const FILE_ATTRIBUTE_READONLY = &H1  '只读文件
Public Const FILE_ATTRIBUTE_HIDDEN = &H2   '隐含文件
Public Const FILE_ATTRIBUTE_SYSTEM = &H4   '系统文件
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10   '目录文件(所获取的文件类型是目录)
                                               '在FtpFindFirstFile和FtpFindNextFile函数把文件和目录当作文件一同获取
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20   '存档文件
Public Const FILE_ATTRIBUTE_NORMAL = &H80   '文件没有的其他属性值
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100  '临时文件
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800  '被压缩的文件和目录
Public Const FILE_ATTRIBUTE_OFFLINE = &H1000


'直接从远程服务器中获得数据,而不使用本地缓冲的数据
Public Const INTERNET_FLAG_RELOAD = &H80000000

'FTP服务器的文件打开标记:只读或可写
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000

'标示调用Internet会话的应用程序的名称
Public Const scUserAgent = "FTP CLIENT"
'按照预定义的方式打开连接Internet对话
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
'直接连接Internet
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
'通过代理服务器连接
Public Const INTERNET_OPEN_TYPE_PROXY = 3
'使用与连接协议相应的端口号
Public Const INTERNET_INVALID_PORT_NUMBER = 0
'与ftp服务器之间的文件传输采取ascii(文本)方式
Public Const FTP_TRANSFER_TYPE_ASCII = &H1
'与ftp服务器之间的文件传输采取binary(二进制)方式
Public Const FTP_TRANSFER_TYPE_BINARY = &H1
Public Const INTERNET_FLAG_PASSIVE = &H8000000
'从服务器返回的一个附加错误
Public Const ERROR_INTERNET_EXTENDED_ERROR = 12003

'在与Internet上的一些常用的服务器程序连接时,常用的端口号是.
'FTP协议服务器的端口号为21
Public Const INTERNET_DEFAULT_FTP_PORT = 21
'GOPHER协议服务器的端口号为70
Public Const INTERNET_DEFAULT_GOPHER_PORT = 70
'HTTP协议服务器的端口号为80
Public Const INTERNET_DEFAULT_HTTP_PORT = 80

'连接Internet服务的常数
Public Const INTERNET_SERVICE_FTP = 1
Public Const INTERNET_SERVICE_GOPHER = 2
Public Const INTERNET_SERVICE_HTTP = 3

'用于装载文件时间的结构
Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type

'这个结构用于装载与找到的文件有关的具体信息
Type WIN32_FIND_DATA
        dwFileAttributes As Long '文件的属性
        ftCreationTime As FILETIME '文件的创建时间
        ftLastAccessTime As FILETIME '文件的最后一次被读写的时间
        ftLastWriteTime As FILETIME '文件的最后一次修改的时间
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * MAX_PATH  '用于存放文件名的字符串
        cAlternate As String * 14
End Type

Public Const ERROR_NO_MORE_FILES = 18

'连接FTP服务器的操作函数

'打开连接internet的会话
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
'sAgent--要调用internet对话的应用程序名
'lAccessType--请求的访问的类型,包括:
'INTERNET_OPEN_TYPE_PRECONFIG---预配置(缺省)
'INTERNET_OPEN_TYPE_DIRECT--直接指向internet
'INTERNET_OPEN_TYPE_PROXY--通过代理服务器连接
'sProxyName--如果lAccessType被设置为INTERNET_OPEN_TYPE_PROXY,该参数为
'代理服务器的名字
'sProxyBypass--包含一系列代理服务器地址的字符串
'lFlags--会话的选项,可包括下列值:
'INTERNET_FLAG_DONT_CACHE--不对数据进行本地缓冲或通过网关服务器缓冲
'INTERNET_FLAG_ASYNC--当操作完成时,将同INTERNET_STATUS_REQUEST_COMPLETE
'一起进行一个状态回调
'INTERNET_FLAG_OFFLINE--只通过永久缓冲进行下载操作

'打开一个根据连接类型的Internet连接
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _
ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
'hInternetSession--函数InternetOpen()打开Internet对话返回的值
'sServerName--要连接的服务器的名称或IP
'nServerPort--该连接的Internet端口
'sUsername--登录的用户帐号
'sPassword--登录的口令
'lService--要连接的服务器类型(这里是连接FTP服务器,连接的类型为常数INTERNET_SERVICE_FTP)

'关闭Internet连接
Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer
'hInet--InternetConnect()函数返回的值

'文件查找操作

'在FTP连接中查找一个文件。在调用此函数后取得第一个文件后,可以接着调用FtpFindNextFile()
'获得下一个查到的FTP服务器上的文件。
Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _
(ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _
      lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
'lpszSearchFile--指向要搜索的文件名。可以通配符*.*的形式。
'lpFindFileData--用于装载与找到的文件有关的具体信息
'dwFlags--数据传输的方式,通常设置为0,(ASCII方式)

'继续由FtpFindFirstFile()函数发起的文件搜索操作

Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _
    (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
'hFind--FtpFindFirstFile()函数的返回值
'lpvFindData--用于装载与找到的文件有关的具体信息

'目录操作

'改变FTP服务器的当前目录。
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
'lpszDirectory--包含要到达的目录名。可以是相对的或绝对的路径。

'在ftp服务器上创建目录
Public Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
'lpszDirectory--包含要创建目录的字符串,可以是一个相对路径或绝对路径

'取得ftp当前的目录的名字
Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
    (ByVal hFtpSession As Long, lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Boolean
'lpszCurrentDirectory--存放目录名字的字符串
'lpdwCurrentDirectory--目录名字字符串的字节数

'删除ftp服务器的一个目录
Public Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
'lpszDirectory--要删除的目录名称,可以是相对路径或绝对路径

'文件操作

'从ftp服务器上取得一个文件并保存在本地机器上,此函数包括了与从一个FTP服务器中读取一个文件
'并在本地保存等操作有关的所有功能

Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
      ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, _
      ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
'lpszRemoteFile--包含FTP服务器中要读的文件名
'lpszNewFile--在本地机器中要创建的文件名
'fFailIfExists--当为TRUE时,如果文件已经存在,则调用失败
'dwFlagsAndAttributes--文件的属性
'dwFlags--文件的传输方式可能包括下列值:
'FTP_TRANSFER_TYPE_ASCII--使用可以将控制和格式信息转换到本地对应文件的ASCII传输方式
'FTP_TRANSFER_TYPE_BINARY--使用把文件作为一个连续数据流传输的FTP图象传输方式,这种方式
'不区别在文件内部数据结构之间的任何分界(如行结束的回车标记)
'dwContext--要取回的文件的描述表标识符
      
'把一个文件上栽到FTP服务器上。其中包括了要将一个文件上载到FTP服务器上所有的有关操作

Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
      ByVal lpszRemoteFile As String, _
      ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
'lpszLocalFile--要发送的文件名
'lpszRemoteFile--在FTP服务器上要创建的文件名
'dwFlags--文件的传输方式
'dwContext--要取回的文件的描述表标识符

'在FTP服务器上打开一个文件以进行读或写操作

Public Declare Function FtpOpenFile Lib "wininet.dll" Alias _
        "FtpOpenFileA" (ByVal hFtpSession As Long, _
        ByVal sFileName As String, ByVal lAccess As Long, _
        ByVal lFlags As Long, ByVal lContext As Long) As Long
'sFileName--要打开的文件名
'lAccess--文件访问标记,可以是GENERIC_READ或GENERIC_WRITE
'lFlags--文件传输方式(文本或二进制)
'lContext--要打开的文件的描述表标识符

'在FTP服务器上删除一个指定的文件
Public Declare Function FtpDeleteFile Lib "wininet.dll" _
    Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
    ByVal lpszFileName As String) As Boolean
'lpszFileName--要删除的文件名。可以是相对路径或绝对路径。

'取得最后一次与internet交互的响应信息
Public Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" ( _
    lpdwError As Long, _
    ByVal lpszBuffer As String, _
    lpdwBufferLength As Long) As Boolean

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -