荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: sh.bbs@bbs.sjtu.edu.cn (与饮水思源共进退!), 信区: Linux
标  题: Re: 求问一下ftp下载的编程问题
发信站: 饮水思源 (Sat Apr  9 01:20:52 2005)
转信站: SZU!news.szu.edu.cn!bbsnews.sdu.edu.cn!SJTU

 da.sin_family = AF_INET;
      da.sin_addr.s_addr = myaddr.addr;
      /* da.sin_addr.s_addr = INADDR_ANY;
       */
      da.sin_port = 0;
      if ((sock_data = socket (AF_INET, SOCK_STREAM, 0)) < 0)
        {
          perror ("socket error");
          return (-1);
        }
      len = sizeof (da);
      if ((bind (sock_data, (struct sockaddr *) &da, len)) < 0)
        {
          perror ("bind error");
          return (-1);
        }

      if (getsockname (sock_data, (struct sockaddr *) &da, &len) < 0)
        {
          perror ("getsockname failed");
          return (-1);
        }
      port = ntohs (da.sin_port);
      if (listen (sock_data, 5) < 0)
        {
          perror ("listen failed");
          return (-1);
        }

      sprintf (cmd, "PORT %u,%u,%u,%u,%u,%u\r\n",
               (unsigned char) myaddr.bytes[0],
               (unsigned char) myaddr.bytes[1],
               (unsigned char) myaddr.bytes[2],
               (unsigned char) myaddr.bytes[3], port / 256,
               port - (unsigned int) (port / 256) * 256);
      fcmd ();
      check_code ("200");

      sprintf (cmd, "LIST -l\r\n");
      fcmd ();
      check_code ("150");       /*150 Opening ASCII mode data connection for fil
e list */


      FD_ZERO (&rset);
      FD_SET (sock_data, &rset);

 status = select (sock_data + 1, &rset, NULL, NULL, &tval);

      if (status == -1)
        {
          perror ("select error in list!");
          return (-1);
        }
      if (status)
        {
          len = sizeof (da);
          if ((ns = accept (sock_data, (struct sockaddr *) &da, &len)) < 0)
            {
              perror ("accpet error timeout");
              return (-1);
            }
        }


      close (sock_data);

到这里,从ns里就可以读到list的数据了

【 在 heack (情归齐鲁) 的大作中提到: 】
: 老大,能不能现在就传给我/
: 感激不尽!
: 【 在 sh (与饮水思源共进退!) 的大作中提到: 】
: : 明天给你贴段代码看看
: : 以port模式运作的的data line


--

欢迎访问Fishnet FTP搜索引擎
校内文件资源搜索的最佳选择~
http://search.univs.cn/sjtu
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 222.64.221.*]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店