首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,看到一段Socket实现FTP的代码不是很明白,请哪位大牛帮看看

2013-06-25 
求助,看到一段Socket实现FTP的代码不是很明白,请哪位大牛帮看看!客户端登录的时候有这么一段代码,说是针对

求助,看到一段Socket实现FTP的代码不是很明白,请哪位大牛帮看看!
客户端登录的时候有这么一段代码,说是针对不同的防火墙,但看不明白,请问代码中的9种登录情况是什么意思?

// 登录到服务器
BOOL CFTPclient::LogOnToServer(CString hostname,int hostport,CString username, CString password, CString acct, CString fwhost,CString fwusername, CString fwpassword,int fwport,int logontype) {
int port,logonpoint=0;
const int LO=-2, ER=-1;
CString buf,temp;
const int NUMLOGIN=9; // 支持9种不同的登录方式
int logonseq[NUMLOGIN][100] = {
// 下面的数组保存了针对不同防火墙的登录序列
{0,LO,3, 1,LO,6, 2,LO,ER}, // 没有防火墙
{3,6,3, 4,6,ER, 5,ER,9, 0,LO,12, 1,LO,15, 2,LO,ER}, // 主机名
{3,6,3, 4,6,ER, 6,LO,9, 1,LO,12, 2,LO,ER}, // USER after logon
{7,3,3, 0,LO,6, 1,LO,9, 2,LO,ER}, //proxy OPEN
{3,6,3, 4,6,ER, 0,LO,9, 1,LO,12, 2,LO,ER}, // Transparent
{6,LO,3, 1,LO,6, 2,LO,ER}, // USER with no logon
{8,6,3, 4,6,ER, 0,LO,9, 1,LO,12, 2,LO,ER}, //USER fireID@remotehost
{9,ER,3, 1,LO,6, 2,LO,ER}, //USER remoteID@remotehost fireID
{10,LO,3, 11,LO,6, 2,LO,ER} // USER remoteID@fireID@remotehost
};
socket FTP 防火墙
[解决办法]
logonseq[NUMLOGIN][100]是一个二维数组,用来存储防火墙设置,设置USER命令的行参数。
程序前面对logontype和logonpoint进行了判断,然后由switch(logonseq[logontype][logonpoint]) 语句确定user要向服务器发送的命令行参数,例如case 0时,发送"USER "+username;  case 11时,发送"PASS "+password+"@"+fwpassword;等等。
前面定义了const int LO=-2, ER=-1; 是用于进行登陆服务器成功与否的判断的。
case ER: // ER说明发生错误
case LO: // LO说明已经成功登录服务器

logonseq[NUMLOGIN][100]中的case 0 ~ case 11,case ER,case LO程序中有用到和说明,但是case 12和case 15好像未使用到,不知道是干什么用的。

热点排行