我想问你一个问题。我有一个将文件发送到 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;
}