- 论坛徽章:
- 1
|
本帖最后由 jiufei19 于 2010-03-21 13:42 编辑
当然要先提去出服务器传回的端口号了呀,端口号就在服务器的应答中,从中读出并解析即可
/*
* 用于被动模式下向ftp服务器发送pasv命令
*
* 返回值port_pasv, 表示正确收到服务器发回的port
* 返回值0 , 表示PASV命令发送失败
*/
int passive_notify(int fd)
{
int status;
int port_pasv;
char res_buffer[BUFSIZE];
send_ftpcmd (fd, "PASV", NULL);
status = get_ftpcmd_status(fd, res_buffer);
if( status != 227 )
/* 如果PASV命令不成功 */
return 0;
port_pasv = parse_port(res_buffer, strlen(res_buffer));
return port_pasv;
}
int parse_port(char *s, int len)
{
char *p;
char *parm[6];
int port, resi, quot;
int i = 0;
memset(s + len - 1, 0, 1);
p = strstr(s, "(");
p++;
parm[i++] = strtok(p, ",");
while(parm[i++] = strtok(NULL, ","));
resi = atoi(parm[5]);
quot = atoi(parm[4]);
port = quot * 256 + resi;
return port;
} |
|