FTP客户端PASV模式下建立数据连接出问题
/*建立socket连接*/int ConnectTO(char *ip,unsigned short port){ int sockftp; sockftp = socket(AF_INET,SOCK_STREAM,0); if(-1 == sockftp) { printf("socket ftp error\n"); return FAL; } /* unsigned long addrip; addrip = inet_addr(ip); if(-1 == addrip) { struct hostent *phostent = gethostbyname(serverip); if(!phostent) return FAL; addrip =(*(struct in_addr*)phostent->h_addr).s_addr; }*/ struct sockaddr_in serveraddr; memset(&serveraddr,0,sizeof(struct sockaddr_in)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons ( port ); serveraddr.sin_addr.s_addr = inet_addr(ip);; printf("Socket connected. Waiting for welcome message...\n"); if(connect(sockftp,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) == -1 )//建立数据socket阻塞 { printf("connect error\n"); close(sockftp); return FAL; } if(ftpcmd(sockftp, NULL )!=220) { printf(" Can't read from control socket. Socket error = #10054.\n"); close(sockftp); return FAL; } printf("Connected. Authenticating...\n"); return sockftp;}