0

1つ質問したいことがあります。ファイルを FTP サーバーに送信するためのコードを取得しました。インターネットに正しく接続されていれば問題ありません。しかし、私には1つの問題があります。このプログラムが機能するはずの場所では、インターネット アクセスが制限されています。たとえば、ブラウザを開くと、ローカル ネットワークへのアクセスを求めるプロンプトが表示され、インターネットを使用できます。そうしないと使えません。したがって、私のポイントは、ネットワークをユーザー名とパスワードで接続する可能性をコードに追加することです。私は本当にそれを行う方法がわかりません:(助けてください:) 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