资源介绍:
易语言FTP超时处理源码,通过调用windowsAPI实现了FTP超时处理。
资源作者:
资源界面:
.版本 2
.支持库 EThread
.支持库 spec
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
置随机数种子 ()
标准输出 (, “START...”)
启动线程 (&demo, , )
标准输入 ()
API_FreeConsole () ' 64位没办法
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 demo
.局部变量 szHost, 文本型
.局部变量 szUser, 文本型
.局部变量 szPass, 文本型
.局部变量 szLocalFile, 文本型
.局部变量 szRemoteFile, 文本型
.局部变量 dwExitCode, 整数型
.局部变量 dwTimeout, 整数型
.局部变量 threadParam, PARM
.局部变量 hThread, 整数型
.局部变量 dwThreadId, 整数型
.局部变量 buff, 文本型
g_hOpen = 0
szHost = 到文本 (取随机数 (1, 255)) + “.” + 到文本 (取随机数 (1, 255)) + “.” + 到文本 (取随机数 (1, 255)) + “.” + 到文本 (取随机数 (1, 255))
调试输出 (szHost)
szUser = “Jiesoft”
szPass = “2012”
g_hOpen = API_InternetOpen (“FTP sample”, #INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0)
.如果真 (g_hOpen = 0)
标准输出 (, #换行符 + “Error on InternetOpen: ” + 到文本 (API_GetLastError ()))
标准输出 (, #换行符 + “END...”)
返回 ()
.如果真结束
threadParam.pHost = szHost
threadParam.pUser = szUser
threadParam.pPass = szPass
hThread = API_CreateThread (0, 0, 到整数 (&WorkerFunction), 取变量数据地址 (threadParam), 0, dwThreadId)
dwTimeout = 5000
.如果真 (API_WaitForSingleObject (hThread, dwTimeout) = #WAIT_TIMEOUT)
标准输出 (, #换行符 + “Can not connect to server in ” + 到文本 (dwTimeout) + “ milliseconds”)
.如果真 (g_hOpen ≠ 0)
API_InternetCloseHandle (g_hOpen)
.如果真结束
API_WaitForSingleObject (hThread, #INFINITE)
标准输出 (, #换行符 + “Thread has exited”)
标准输出 (, #换行符 + “END...”)
返回 ()
.如果真结束
dwExitCode = 0
.如果真 (API_GetExitCodeThread (hThread, dwExitCode) = 0)
标准输出 (, #换行符 + “Error on GetExitCodeThread: ” + 到文本 (API_GetLastError ()))
标准输出 (, #换行符 + “END...”)
返回 ()
.如果真结束
API_CloseHandle (hThread)
.如果真 (API_FtpGetFile (g_hConnect, szRemoteFile, szLocalFile, 0, #INTERNET_FLAG_RELOAD, #FTP_TRANSFER_TYPE_ASCII, 0) = 0)
标准输出 (, #换行符 + “Error on FtpGetFile: ” + 到文本 (API_GetLastError ()))
.如果真结束
.如果真 (g_hConnect ≠ 0)
API_InternetCloseHandle (g_hConnect)
.如果真结束
.如果真 (g_hOpen ≠ 0)
API_InternetCloseHandle (g_hOpen)
.如果真结束
标准输出 (, #换行符 + “END...”)
.子程序 WorkerFunction, 整数型
.参数 vThreadParm, 整数型
.局部变量 pThreadParm, PARM
.局部变量 buff, 文本型
置入代码 ({ 139, 93, 8, 139, 3, 137, 69, 252 })
g_hConnect = API_InternetConnect (g_hOpen, pThreadParm.pHost, #INTERNET_INVALID_PORT_NUMBER, pThreadParm.pUser, pThreadParm.pPass, #INTERNET_SERVICE_FTP, 0, 0)
.如果真 (g_hConnect = 0)
标准输出 (, #换行符 + “Error on InternetConnnect: ” + 到文本 (API_GetLastError ()))
返回 (1)
.如果真结束
返回 (0)
资源下载: