封装一个类CSftp
upload_sftp.h
#define UPLOAD_SFTP_H
#include <QString>
#include <string>
#include "libssh2_sftp.h"
class CSftp{
public:
CSftp();
~CSftp();
bool Init(QString remotePath ,QString ip = "10.11.22.34", int port = 22, QString user = "test", QString pwd = "test");
bool Fini();
bool CreateFile(const std::string fullPathFileName);
bool CreateDir(const std::string fullPathName);
bool UploadSftp(const char * data, const int size,const std::string fullPathName,const std::string fileName);
private:
bool ConnectToHost();
bool DisConnHost();
private:
int m_nPort;
int m_sock;
QString m_strIP;
QString m_strUser;
QString m_strPwd;
QString m_remotePath;
LIBSSH2_SESSION *m_session;
LIBSSH2_SFTP *m_sftpSession;
LIBSSH2_SFTP_HANDLE *m_sftpHandle;
};
#endif // UPLOAD_SFTP_H
upload_sftp.cpp
#include "upload_huainan.h"
#include <string>
#include "log.h"
#ifdef WIN32
#include <windows.h>
#include <winsock2.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
#endif
CSftp::CSftp()
{
m_session = NULL;
m_sock = -1;
m_sftpSession = NULL;
m_sftpHandle = NULL;
}
CSftp::~CSftp()
{
if (m_session != NULL)
{
libssh2_session_free(m_session);
m_session = NULL;
}