简体   繁体   English

Windows,WinInet C ++ API

[英]Windows , WinInet C++ API

I am trying to use FTP to read some files from my local FTP filezilla server. 我正在尝试使用FTP从本地FTP filezilla服务器读取一些文件。 However I struggle a bit, here is my code: 但是我有点挣扎,这是我的代码:

#include<Windows.h>
#include<WinInet.h>
#include<iostream>

using namespace std;


HINTERNET hOpener, hCon, hFinder;
Handle hFile;
char buffer[2000] = "\0";
WIN32_FIND_DATA findData;

hOpener = InternetOpen(TEXT("Chrome"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);

hCon = InternetConnect(hOpener, TEXT("127.0.0.1"), INTERNET_DEFAULT_FTP_PORT, TEXT("anonymous"), TEXT("adminn"), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);

hFinder = FtpFindFirstFile(hCon, NULL, &findData, INTERNET_FLAG_RELOAD, 0);

hFile = FtpOpenFile(hOpener, findData.cFileName, GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0);

LPDWORD x = 0;
cout << InternetReadFile(hFile, buffer, 280, x);

However, it prints 0 when it should print 1(basically there's a problem reading). 但是,当它应该打印1时,它会打印0(基本上有问题)。 What am I doing wrong here? 我在这里做错了什么?

You are passing a NULL DWORD* pointer to the lpdwNumberOfBytesRead parameter of InternetReadFile() . 您正在将NULL DWORD*指针传递给InternetReadFile()lpdwNumberOfBytesRead参数。 You need to pass a pointer to a DWORD instead. 您需要传递一个指向DWORD的指针。

Change: 更改:

LPDWORD x = 0;
InternetReadFile(..., x);

to: 至:

DWORD x = 0;
InternetReadFile(..., &x);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM