⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.h

📁 Visual C++ 网络通信编程实用案例精选 的配套光盘
💻 H
字号:
// Server.h: interface for the CServer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SERVER_H__BF20FB89_D02B_4628_884C_35576F24D6BC__INCLUDED_)
#define AFX_SERVER_H__BF20FB89_D02B_4628_884C_35576F24D6BC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string.h>
#include "stdlib.h"
#include "winsock2.h"

#define WSA_RECV         0
#define WSA_SEND         1

#define DATA_BUFSIZE    8192
#define MAX_NAME_LEN    128
#define MAX_PWD_LEN     128
#define MAX_RESP_LEN    1024
#define MAX_REQ_LEN     256
#define MAX_ADDR_LEN    80

#define FTP_PORT        21     // FTP 控制端口
#define DATA_FTP_PORT   20     // FTP 数据端口

#define USER_OK         331
#define LOGGED_IN       230
#define LOGIN_FAILED    530
#define CMD_OK          200
#define OPENING_AMODE   150
#define TRANS_COMPLETE  226
#define CANNOT_FIND     550
#define FTP_QUIT        221
#define CURR_DIR        257
#define DIR_CHANGED     250
#define OS_TYPE         215
#define REPLY_MARKER    504
#define PASSIVE_MODE    227

//#define FTP_USER		"toldo"
//#define FTP_PASS		"toldo"
//#define DEFAULT_HOME_DIR    "F:\\"

#define MAX_FILE_NUM        1024

#define MODE_PORT       0
#define MODE_PASV       1

#define PORT_BIND   1821

typedef struct {
   CHAR   buffRecv[DATA_BUFSIZE];
   CHAR   buffSend[DATA_BUFSIZE];
   WSABUF wsaBuf;
   SOCKET s;
   WSAOVERLAPPED o;
   DWORD dwBytesSend;
   DWORD dwBytesRecv;
   int   nStatus;
} SOCKET_INF, *LPSOCKET_INF;

typedef struct {
	TCHAR    szFileName[MAX_PATH];
	DWORD    dwFileAttributes; 
	FILETIME ftCreationTime; 
	FILETIME ftLastAccessTime; 
	FILETIME ftLastWriteTime; 
	DWORD    nFileSizeHigh; 
	DWORD    nFileSizeLow; 
} FILE_INF, *LPFILE_INF;

extern UINT ServerThread(LPVOID lpParameter);

class CServer  
{
public:
	CServer();
	virtual ~CServer();
public:

	char m_User[128];
	char m_Password[128];
	char m_Directory[128];
	char m_WelcomeInfor[1024];
	UINT m_Port;
	BOOL m_bStop;

	void SetSerConfigInfor(const char *user,const char *password,const char *directory,const char * welcomeinfor,UINT port);
	
	BOOL WelcomeInfo( SOCKET s );
	int LoginIn( LPSOCKET_INF pSocketInfo  );
	int SendRes( LPSOCKET_INF pSI );
	int RecvReq( LPSOCKET_INF pSI );
	int DealCommand( LPSOCKET_INF pSI );
	int DataRecv( SOCKET s, const char* szFileName );
	DWORD WriteToFile( SOCKET s , const char* szFile );
	SOCKET DataAccept( SOCKET& s );
	int DataSend( SOCKET s, char* buff,int nBufSize );
	UINT FileListToString( char* buff, UINT nBuffSize,BOOL bDetails );

	char* ConvertCommaAddress( char* szAddress, WORD wPort );
	int ConvertDotAddress( char* szAddress, LPDWORD pdwIpAddr, LPWORD pwPort);
	DWORD ReadFileToBuffer( const char* szFile, char *buff, DWORD nFileSize );
	int CombindFileNameSize( const char* szFileName,char* szFileNS );
	int	DataConn( SOCKET& s, DWORD dwIp, WORD wPort, int nMode);



	int GetFileList( LPFILE_INF pFI, UINT nArraySize, const char* szPath  );
	char* GetLocalAddress();
	char* HostToNet( char* szPath ) ;
	char* NetToHost( char* szPath ) ;
	char* RelativeDirectory( char* szDir );
	char* AbsoluteDirectory( char* szDir );

};

#endif // !defined(AFX_SERVER_H__BF20FB89_D02B_4628_884C_35576F24D6BC__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -