0

我想问你一个问题。我有一个将文件发送到 FTP 服务器的代码。如果我们有正确的互联网连接,那就很好了。但我有一个问题。在这个程序应该工作的地方,互联网访问是......让我们说有限。我的意思是,例如,如果我打开浏览器会提示访问本地网络,那么我可以使用互联网。否则我无法使用它。因此,我的观点是添加代码可能性,以使用用户名和密码连接我的网络。我真的不知道该怎么做:(请帮帮我:)这是发送FTP文件的代码:

int UploadFTP::SubmitFile(std::string localFile) {

ServerData data;
char computerName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD buffer = MAX_COMPUTERNAME_LENGTH + 1;
if(GetComputerName(computerName, &buffer) == 0) printf("ComputerNameGetFail\n");
std::string remoteFile;
remoteFile = std::string(computerName) + "(" +  GetTimeString() + std::string(".txt");
for(int i=0;i<remoteFile.length();i++) {
    if(remoteFile[i] == '\n') remoteFile[i] = ')';
    if(remoteFile[i] == ':' || remoteFile[i] == '/') remoteFile[i] = '-';
}

HINTERNET hInternet;
HINTERNET hFtpSession;

if(InternetAttemptConnect(0) == ERROR_SUCCESS) printf("Send.Init...\n");else printf("Conn.Err.\n");

hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hInternet != NULL) {
    hFtpSession = InternetConnect(hInternet, data.serverIP.c_str(), INTERNET_DEFAULT_FTP_PORT, data.userName.c_str(), data.password.c_str(), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    if(hFtpSession != NULL) {
        if(FtpPutFile(hFtpSession, localFile.c_str(), remoteFile.c_str(), FTP_TRANSFER_TYPE_BINARY, 0)) {
            InternetCloseHandle(hFtpSession);
            InternetCloseHandle(hInternet);
            printf("Sent ok!\n");
        }else {
            printf("Send err.\n");
            DWORD err = GetLastError();
            printf("ERR: %x\n",err);
            InternetCloseHandle(hFtpSession);
            InternetCloseHandle(hInternet);
            return -1;
        }
    }else {
        printf("Can't reach conn.\n");
        InternetCloseHandle(hInternet);
        return -1;
    }
}else {
    printf("Conn. err.\n");
    return -1;
}

return 0;

}

4

0 回答 0