亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ftp.c

?? 定義了一系列C++類,通過它們來使用socket比直接調用底層的低級函數更有效率
?? C
字號:
// ftp.h // Copyright (C) 1992-1996 Gnanasekaran Swaminathan <gs4t@virginia.edu>//// Permission is granted to use at your own risk and distribute this software// in source and  binary forms provided  the above copyright notice and  this// paragraph are  preserved on all copies.  This software is provided "as is"// with no express or implied warranty.//// Version: 12Jan97 1.11#include <config.h>#include <ftp.h>#include <fstream.h>#include <Fork.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <stdio.h> // for sprintf#include <errno.h>#if defined (__osf__) && defined (__DECCXX)   extern "C" {#    include <netdb.h>   }#else #  include <netdb.h>#endifchar reptype [][8] = {  "A N",  "A T",  "A C",  "E N",  "E T",  "E C",  "I",  "L "};char filestru [][8] = {  "F",  "R",  "P"};char transmode [][8] = {  "S",  "B",  "C"};// ftpdata waits on a port at the local machine.// When a connection is made, it receives a file from remote// host if the ostream o is set, or it sends a file to the remote// host if the istream i is set.ftp::replycodea ftp::ftpbuf::ftpdata (int portno, istream* i, ostream* o,                                      const char* cmd, const char* arg){  sockinetbuf sb (sockbuf::sock_stream, 0);  sb.bind_until_success (portno);  useraddr (sb.localaddr ());    sb.listen (1);  if (send_cmd (cmd, arg) >= ftp::rca_error)    return ftp::rca_error;    if (o) {    sockbuf c = sb.accept ();    // read data from c and put it in o    char buf [1024];    int  rdsz;    while ((rdsz = c.sys_read (buf, 1024)) != EOF)      o->write (buf, rdsz);  } else if (i) {    sockbuf c = sb.accept ();     // read data from i and send it to c    char buf [1024];    int  rdsz;    streambuf* rb = i->rdbuf ();    while ((rdsz = rb->xsgetn (buf, 1024)) > 0) {      int wrsz = c.sys_write (buf, rdsz);      if (rdsz != wrsz)	cerr << "write error\n";    }  }  // Note: sockbuf object c must have been destructed by the time you reach  //       here.  return get_response ();} ftp::replycodea ftp::ftpbuf::get_response ()     // get all the response that one can get and send all of them to o{  // if o is 0, then we trash data.  int  firstline = 1;  while (underflow () != EOF) {    int n = in_avail ();    if (n < 5)      continue;    // data is of this form: 221 repsonse <CRLF> or 221-response <CRLF>    char* q = gptr ();    char* p = q;    // zap upto <CRLF>    int i = 0;    for (i = 2; i <= n; i++, p++)      if (*p == '\r' && *(p+1) == '\n') {	break;      }    if (o)      o->write (q, i);    gbump (i);    if (firstline) {      strncpy (replycode, q, 3);      replycode [3] = ' ';      if (q [3] == ' ')	break;      firstline = 0;    } else if (strncmp (q, replycode, 4) == 0)      break;  }    return (replycodea) replycode [0];}ftp::replycodea ftp::ftpbuf::send_cmd (const char* cmd,				       const char* arg){  xsputn (cmd, ::strlen (cmd));  if (arg) {    xsputn (" ", 1);    xsputn (arg, ::strlen (arg));  }  xsputn ("\r\n", 2);  sync ();    return get_response ();}ftp::ftp (ostream* out): ios (0){  ios::init (new ftpbuf (out));}ftp::ftpbuf::ftpbuf (ostream* out): protocol::protocolbuf (protocol::tcp),  o (out){  replycode [4] = 0;}void ftp::ftpbuf::serve_clients (int portno)// right now no server ftp class can be used as a server{}ftp::replycodea ftp::ftpbuf::cd (const char* dir){  return send_cmd ("CWD", dir);}ftp::replycodea ftp::ftpbuf::useraddr (sockinetaddr sa){  if (sa.sin_addr.s_addr == 0) {    // local host    char hostname [64];    if (::gethostname (hostname, 63) == -1) throw sockerr (EADDRNOTAVAIL);    hostent* hp = gethostbyname (hostname);    if (hp == 0) throw sockerr (EADDRNOTAVAIL);    memcpy (&sa.sin_addr, hp->h_addr, hp->h_length);  }  struct in_addr ina = sa.sin_addr;  int    portno      = ntohs(sa.sin_port);  char*  ina_p       = inet_ntoa (ina);  char   addr [80];  char* p = 0;  strcpy (addr, ina_p);  while (p = strchr (addr, '.'))    *p = ',';  int hi_portno = portno >> 8;  int lo_portno = portno & 0xff;  sprintf (addr + strlen (addr), ",%d,%d", hi_portno, lo_portno);  return send_cmd ("PORT", addr);}ftp::replycodea ftp::ftpbuf::useraddr (const char* hostname, int portno){  return useraddr (sockinetaddr (hostname, portno));}ftp::replycodea ftp::ftpbuf::server_port (int portno){  int hi_portno = portno >> 8;  int lo_portno = portno & 0xff;  char port [80];    sprintf (port, "%d,%d", hi_portno, lo_portno);    return send_cmd ("PASV", port);}  ftp::replycodea ftp::ftpbuf::rep_type (ftp::reptype rt){  return send_cmd ("TYPE", ::reptype [int(rt)]);}ftp::replycodea ftp::ftpbuf::file_stru (ftp::filestru fs){  return send_cmd ("STRU", ::filestru [int(fs)]);}ftp::replycodea ftp::ftpbuf::trans_mode (ftp::transmode tm){  return send_cmd ("STRU", ::transmode [int(tm)]);}ftp::replycodea ftp::ftpbuf::getfile (const char* rpath, const char* lpath){  if (lpath == 0)    lpath = rpath;  if (rpath == 0)    list ();  ofstream f (lpath);  return ftpdata (10000, 0, &f, "RETR", rpath);}ftp::replycodea ftp::ftpbuf::list (const char* rpath, int justnames){  if (justnames)    return ftpdata (10000, 0, o, "NLST", rpath);  else    return ftpdata (10000, 0, o, "LIST", rpath);}ftp::replycodea ftp::ftpbuf::putfile (const char* lpath, const char* rpath){  if (rpath == 0)    rpath = lpath;  if (lpath == 0)    return ftp::rca_error;  ifstream f(lpath);  return ftpdata (10000, &f, 0, "STOR", rpath);}ftp::replycodea ftp::ftpbuf::putfile (const char* lpath){  if (lpath == 0)    return ftp::rca_error;  ifstream f(lpath);  return ftpdata (10000, &f, 0, "STOU", lpath);}  ftp::replycodea ftp::ftpbuf::append  (const char* lpath, const char* rpath){  if (lpath == 0)    return ftp::rca_error;  if (rpath == 0)    rpath = lpath;  ifstream f(lpath);  return ftpdata (10000, &f, 0, "APPE", 0);}ftp::replycodea ftp::ftpbuf::allocate (int numbytes){  char b[32];  sprintf (b, "%d", numbytes);  return send_cmd ("ALLO", b);}ftp::replycodea ftp::ftpbuf::restart (int marker){  char b[32];  sprintf (b, "%d", marker);  return send_cmd ("REST", b);}ftp::replycodea ftp::ftpbuf::rename (const char* rpath, const char* newrpath){  if (rpath == 0 || newrpath == 0)    return ftp::rca_error;  if (send_cmd ("RNFR", rpath) >= ftp::rca_error)    return rca_error;  return send_cmd ("RNTO", newrpath);}ftp::replycodea ftp::ftpbuf::rmfile (const char* rpath){  return send_cmd ("DELE", rpath);}ftp::replycodea ftp::ftpbuf::rmdir  (const char* rpath){  return send_cmd ("RMD", rpath);}ftp::replycodea ftp::ftpbuf::mkdir  (const char* rpath){  return send_cmd ("MKD", rpath);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜av成人在线看| 色悠悠久久综合| 婷婷六月综合网| 午夜视频久久久久久| 洋洋av久久久久久久一区| 亚洲日本欧美天堂| 亚洲码国产岛国毛片在线| 中文字幕一区二区三区在线不卡| 久久久久久久久久看片| 欧美一区二区三区日韩| 精品三级av在线| 久久综合精品国产一区二区三区 | 欧美一卡二卡在线观看| 欧美性猛交xxxx乱大交退制版| 99久久99久久综合| 91精彩视频在线| 欧美性videosxxxxx| 日韩午夜小视频| 精品日韩99亚洲| 国产日产欧产精品推荐色| 日韩毛片视频在线看| 亚洲影视在线观看| 理论片日本一区| 成人免费高清在线| 在线观看91精品国产入口| 在线观看日韩av先锋影音电影院| 欧美日韩视频在线观看一区二区三区 | 久久精品国产色蜜蜜麻豆| 午夜日韩在线电影| 蜜臀av亚洲一区中文字幕| 国产精品1区2区3区| 成人精品在线视频观看| 欧美日免费三级在线| 国产日韩欧美在线一区| 亚洲一区二区美女| 偷偷要91色婷婷| 国产一区二区三区电影在线观看| 99精品视频在线观看| 91久久久免费一区二区| 日韩免费观看高清完整版在线观看| 久久久99免费| 午夜精品福利一区二区三区av | 色婷婷av一区二区三区软件 | 欧美三级电影在线看| 欧美电影免费观看完整版| 国产精品视频免费看| 日韩高清不卡在线| 成a人片亚洲日本久久| 欧美精品久久久久久久多人混战| 久久亚洲精精品中文字幕早川悠里 | 亚洲一区二区三区不卡国产欧美| 麻豆一区二区在线| 国产一区二区导航在线播放| 91久久精品日日躁夜夜躁欧美| 久久综合色婷婷| 亚洲高清视频中文字幕| 国产福利不卡视频| 日韩欧美国产电影| 亚洲一区在线视频| 99在线精品一区二区三区| 欧美变态tickle挠乳网站| 亚洲一区二区成人在线观看| 成人免费视频网站在线观看| 精品粉嫩超白一线天av| 青青草精品视频| 91麻豆精品91久久久久久清纯 | 国产激情视频一区二区三区欧美| 欧美日韩另类国产亚洲欧美一级| 亚洲欧洲国产日本综合| 成人精品免费网站| 久久精品一区二区三区四区| 久久国产精品露脸对白| 91精品国产丝袜白色高跟鞋| 亚洲成人动漫精品| 欧美女孩性生活视频| 婷婷综合五月天| 56国语精品自产拍在线观看| 亚洲成人综合视频| 在线电影国产精品| 日韩不卡在线观看日韩不卡视频| 69堂亚洲精品首页| 欧美96一区二区免费视频| 精品久久五月天| 国产精品综合一区二区三区| 国产欧美精品一区二区三区四区| 国产麻豆精品一区二区| 国产亚洲人成网站| av资源网一区| 亚洲精品久久久蜜桃| 欧美在线视频日韩| 免费欧美在线视频| 久久综合国产精品| 99国产精品99久久久久久| 亚洲激情图片一区| 欧美一区二区人人喊爽| 国产成人一区在线| 亚洲欧美视频在线观看| 欧美亚洲高清一区| 老司机精品视频导航| 国产精品美女久久久久高潮| 色噜噜久久综合| 日韩激情视频在线观看| 久久久久免费观看| 色视频一区二区| 蜜乳av一区二区三区| 国产精品免费免费| 欧美老女人第四色| 国产精品12区| 亚洲一区二区在线观看视频| 欧美成人精精品一区二区频| 99这里只有久久精品视频| 亚洲妇女屁股眼交7| 国产日韩欧美一区二区三区综合| 在线看日韩精品电影| 国产美女精品在线| 一区二区在线观看视频| 精品理论电影在线| 93久久精品日日躁夜夜躁欧美| 日韩精品视频网站| 国产精品久久久久久久久免费丝袜| 91麻豆精品国产自产在线观看一区| 成人在线综合网站| 看电影不卡的网站| 亚洲一区在线视频| 国产精品久久久久久久久免费相片 | 日本午夜一本久久久综合| 国产亚洲人成网站| 欧美日韩在线三区| www.综合网.com| 国产永久精品大片wwwapp| 亚洲国产一区二区三区| 国产精品乱人伦中文| 欧美一级视频精品观看| 日本韩国一区二区三区| 国产91露脸合集magnet| 久久丁香综合五月国产三级网站| 亚洲在线视频一区| 中文字幕五月欧美| 国产精品丝袜一区| 久久久99精品久久| 久久综合九色综合97婷婷女人 | 亚洲精品欧美专区| 中文字幕av一区二区三区免费看 | 在线观看视频一区二区欧美日韩 | 亚洲精品你懂的| 综合色中文字幕| 国产精品国产三级国产| 国产婷婷色一区二区三区四区| 精品国产亚洲在线| 日韩一区二区三区视频| 91麻豆精品国产91久久久资源速度 | 欧美裸体一区二区三区| 91国偷自产一区二区使用方法| 高清视频一区二区| 国产精品69毛片高清亚洲| 精品一区二区影视| 精品一区二区免费在线观看| 极品销魂美女一区二区三区| 美女www一区二区| 黑人精品欧美一区二区蜜桃| 狠狠色2019综合网| 国产福利电影一区二区三区| 成人一二三区视频| 不卡在线观看av| 在线影院国内精品| 欧美日韩欧美一区二区| 欧美巨大另类极品videosbest| 51精品国自产在线| 日韩欧美在线1卡| 久久精品无码一区二区三区| 中文字幕精品—区二区四季| 国产精品久久毛片| 亚洲国产你懂的| 毛片av一区二区| a在线欧美一区| 欧美亚洲一区三区| 精品国产不卡一区二区三区| 中国色在线观看另类| 一区二区三区欧美激情| 麻豆一区二区三| 国产成人av在线影院| 色综合久久中文综合久久97| 欧美精品tushy高清| 欧美精品一区二区三区很污很色的| 国产精品久久久久一区二区三区| 亚洲一区免费观看| 国产一区在线视频| 欧美色窝79yyyycom| 精品国产伦理网| 一区二区三区欧美| 国产呦萝稀缺另类资源| 日本久久精品电影| 久久久精品蜜桃| 午夜国产不卡在线观看视频| 国产.欧美.日韩| 欧美一区二区三区思思人| 国产精品久久久久久久久久久免费看 | 久久一日本道色综合| 亚洲视频在线一区观看| 日韩综合在线视频|