2016-01-05 19:46:22|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 网络通信|来源:唯设编程网
CFTP::CFTP(const char* ip, const char* logFile):
m_pLogFile(NULL)
{
//清空
memset(m_ip,0,sizeof(m_ip));
//保存IP地址
strcpy_s(m_ip,ip);
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
/*wVersionRequested参数用于指定准备加载的Winsock库的版本。高位字节指定所需要的
Winsock库的副版本,而低位字节则是主版本。然后,可用宏MAKEWORD( X , Y )(其中,x是
高位字节, y是低位字节)方便地获得wVersionRequested的正确值。*/
if(err = WSAStartup( wVersionRequested, &wsaData ))
{
std::cout << "Can not initilize winsock.dll" << std::endl;
std::cout << "Error Code:" << WSAGetLastError() << std::endl;
return;
}else{
std::cout << "winsock.dll loded" << std::endl;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
//打开日志文件
m_pLogFile = fopen(logFile,"ab+");
}
构造函数包含两个参数,一个是ip地址,一个是日志文件的路径,在构造函数中主要完成两部分工作,一是对socket环境进行初始化,而是以追加状态打开日志文件。
CFTP::~CFTP(void)
{
WSACleanup();
//关闭日志文件
if(m_pLogFile != NULL){
fclose(m_pLogFile);
m_pLogFile = NULL;
}
}
析构函数中调用了WSACleanup函数,还有一个功能就是关闭日志文件。