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

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

?? ftpconnection.java

?? 一個利用Java語言實現的ftp程序
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
         // reset state variables
         resetState();
         
         // argument check
         if(!request.hasArgument()) {
            out.write(mFtpStatus.getResponse(501, request, mUser, null));
            return;  
         }
        
         // get filenames
         String fileName = request.getArgument();
         fileName = mUser.getVirtualDirectory().getAbsoluteName(fileName);
         String physicalName = mUser.getVirtualDirectory().getPhysicalName(fileName);
         File reqFile = new File(physicalName);
         
         // print file size
         if(reqFile.exists()) {
             String args[] = {String.valueOf(reqFile.length())};             
             out.write(mFtpStatus.getResponse(213, request, mUser, args));
         }
         else {
             out.write(mFtpStatus.getResponse(550, request, mUser, null));
         }
     } 
     
     
     /**
      * <code>STAT [&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;</code><br>
      *
      * This command shall cause a status response to be sent over
      * the control connection in the form of a reply.
      */
     public void doSTAT(FtpRequest request, FtpWriter out) throws IOException {
         
         // reset state variables
         resetState();
        
         // write the status info
         String args[] = {
            mConfig.getSelfAddress().getHostAddress(),
            mControlSocket.getInetAddress().getHostAddress(),
            mUser.getName()
         };
         out.write(mFtpStatus.getResponse(211, request, mUser, args)); 
     } 
     
     
     /**
      * <code>STOR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;</code><br>
      *
      * This command causes the server-DTP to accept the data
      * transferred via the data connection and to store the data as
      * a file at the server site.  If the file specified in the
      * pathname exists at the server site, then its contents shall
      * be replaced by the data being transferred.  A new file is
      * created at the server site if the file specified in the
      * pathname does not already exist.
      */
     public void doSTOR(FtpRequest request, FtpWriter out) throws IOException {

         InputStream is = null;
         OutputStream os = null;
         try {

             // set state variables
             long skipLen = (mbReset) ? mlSkipLen : 0;
             resetState();
             
             // argument check
             if(!request.hasArgument()) {
                out.write(mFtpStatus.getResponse(501, request, mUser, null));
                return;  
             }
             
             // get filenames
             String fileName = request.getArgument();
             fileName = mUser.getVirtualDirectory().getAbsoluteName(fileName);
             String physicalName = mUser.getVirtualDirectory().getPhysicalName(fileName);
             File requestedFile = new File(physicalName);
             
             // get permission
             if(!mUser.getVirtualDirectory().hasCreatePermission(physicalName, true)) {
                 out.write(mFtpStatus.getResponse(550, request, mUser, null));
                 return;
             }
             
             // now transfer file data
             out.write(mFtpStatus.getResponse(150, request, mUser, null));
             
             // get data connection
             Socket dataSoc = mDataConnection.getDataSocket();
             if (dataSoc == null) {
                  out.write(mFtpStatus.getResponse(550, request, mUser, null));
                  return;
             }
             is = dataSoc.getInputStream();
             
             // go to the appropriate offset
             RandomAccessFile raf = new RandomAccessFile(requestedFile, "rw");
             raf.setLength(skipLen);
             raf.seek(skipLen);
             os = mUser.getOutputStream( new FileOutputStream(raf.getFD()) );
             
             // get data from client
             StreamConnector msc = new StreamConnector(is, os);
             msc.setMaxTransferRate(mUser.getMaxUploadRate());
             msc.setObserver(this);
             msc.connect();
             if(msc.hasException()) {
                 out.write(mFtpStatus.getResponse(451, request, mUser, null));
                 return;
             }
             else {
                 mConfig.getStatistics().setUpload(requestedFile, mUser, msc.getTransferredSize());
             }
             
             out.write(mFtpStatus.getResponse(226, request, mUser, null));
         }
         catch(IOException ex) {
             out.write(mFtpStatus.getResponse(425, request, mUser, null));
         }
         finally {
             IoUtils.close(is);
             IoUtils.close(os);
             mDataConnection.closeDataSocket();
         }
     }
     
     
     /**
      * <code>STOU &lt;CRLF&gt;</code><br>
      *
      * This command behaves like STOR except that the resultant
      * file is to be created in the current directory under a name
      * unique to that directory.  The 250 Transfer Started response
      * must include the name generated.
      */
     public void doSTOU(FtpRequest request, FtpWriter out) throws IOException {

         InputStream is = null;
         OutputStream os = null;
         try {
         
             // reset state variables
             resetState();
             
             // get filenames
             String fileName = mUser.getVirtualDirectory().getAbsoluteName("ftp.dat");
             String physicalName = mUser.getVirtualDirectory().getPhysicalName(fileName);
             File requestedFile = new File(physicalName);
             requestedFile = IoUtils.getUniqueFile(requestedFile);
             fileName = mUser.getVirtualDirectory().getVirtualName(requestedFile.getAbsolutePath());
             String args[] = {fileName};
             
             // check permission
             if(!mUser.getVirtualDirectory().hasCreatePermission(fileName, false)) {
                 out.write(mFtpStatus.getResponse(550, request, mUser, null));
                 return;
             }
             
             // now transfer file data
             out.write(mFtpStatus.getResponse(150, request, mUser, null));
             Socket dataSoc = mDataConnection.getDataSocket();
             if (dataSoc == null) {
                  out.write(mFtpStatus.getResponse(550, request, mUser, args));
                  return;
             }
             
             // receive data from client
             is = dataSoc.getInputStream();
             os = mUser.getOutputStream( new FileOutputStream(requestedFile) );
             
             StreamConnector msc = new StreamConnector(is, os);
             msc.setMaxTransferRate(mUser.getMaxUploadRate());
             msc.setObserver(this);
             msc.connect();
             if(msc.hasException()) {
                 out.write(mFtpStatus.getResponse(451, request, mUser, null));
                 return;
             }
             else {
                 mConfig.getStatistics().setUpload(requestedFile, mUser, msc.getTransferredSize());
             }
             
             out.write(mFtpStatus.getResponse(226, request, mUser, null));
             mDataConnection.closeDataSocket();
             out.write(mFtpStatus.getResponse(250, request, mUser, args));
         }
         catch(IOException ex) {
             out.write(mFtpStatus.getResponse(425, request, mUser, null));
         }
         finally {
            IoUtils.close(is);
            IoUtils.close(os);
            mDataConnection.closeDataSocket(); 
         }
     }
     
     
     /**
      * <code>STRU &lt;SP&gt; &lt;structure-code&gt; &lt;CRLF&gt;</code><br>
      *
      * The argument is a single Telnet character code specifying
      * file structure.
      */
     public void doSTRU(FtpRequest request, FtpWriter out) throws IOException {
         
         // reset state variables
         resetState();
         
         // argument check
         if(!request.hasArgument()) {
            out.write(mFtpStatus.getResponse(501, request, mUser, null));
            return;  
         }
         
         // set structure
         if (mUser.setStructure(request.getArgument().charAt(0))) {
            out.write(mFtpStatus.getResponse(200, request, mUser, null));
         }
         else {
             out.write(mFtpStatus.getResponse(504, request, mUser, null));
         }
     }
     
     
     /**
      * <code>SYST &lt;CRLF&gt;</code><br> 
      *
      * This command is used to find out the type of operating
      * system at the server.
      */
     public void doSYST(FtpRequest request, FtpWriter out) throws IOException {
         
         // reset state variables
         resetState();
         
         // and print server system info 
         String args[] = {mConfig.getSystemName()};
         out.write(mFtpStatus.getResponse(215, request, mUser, args));
     }
     
     
     /**
      * <code>TYPE &lt;SP&gt; &lt;type-code&gt; &lt;CRLF&gt;</code><br>
      *
      * The argument specifies the representation type.
      */
     public void doTYPE(FtpRequest request, FtpWriter out) throws IOException {
         
         // reset state variables
         resetState();
         
         // get type from argument
         char type = 'A';
         if (request.hasArgument()){
             type = request.getArgument().charAt(0);
         }
         
         // set it
         if (mUser.setType(type)) {
            out.write(mFtpStatus.getResponse(200, request, mUser, null));
         }
         else {
             out.write(mFtpStatus.getResponse(504, request, mUser, null));
         }
     }
     
     
     /**
      * <code>USER &lt;SP&gt; &lt;username&gt; &lt;CRLF&gt;</code><br>
      *
      * The argument field is a Telnet string identifying the user.
      * The user identification is that which is required by the
      * server for access to its file system.  This command will
      * normally be the first command transmitted by the user after
      * the control connections are made.
      */
     public void doUSER(FtpRequest request, FtpWriter out) throws IOException {
         
         // reset state variables
         resetState();
         
         // argument check
         if(!request.hasArgument()) {
            out.write(mFtpStatus.getResponse(501, request, mUser, null));
            return;  
         }         
         
         // check user login status
         mbUser = true;
         if(mUser.hasLoggedIn()) {
             if(mUser.getName().equals(request.getArgument())) {
                 out.write(mFtpStatus.getResponse(230, request, mUser, null));
                 return;
             }
             else {
                 mConfig.getConnectionService().closeConnection(mUser.getSessionId());
             }
         }

         // set user name and send appropriate message
         mUser.setName(request.getArgument());
         if(mUser.getIsAnonymous()) {
             if(mConfig.isAnonymousLoginAllowed()) { 
                 FtpRequest anoRequest = new FtpRequest(mUser.getName());
                 out.write(mFtpStatus.getResponse(331, anoRequest, mUser, null));
             }
             else {
                 out.write(mFtpStatus.getResponse(530, request, mUser, null));
                 ConnectionService conService = mConfig.getConnectionService();
                 if (conService != null) {
                    conService.closeConnection(mUser.getSessionId());
                 }
             }
         }
         else {
             out.write(mFtpStatus.getResponse(331, request, mUser, null));
         }
     }
     
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜一区二区三区在线观看| 精品久久99ma| 国产精品综合视频| 亚洲成年人网站在线观看| 久久久精品欧美丰满| 亚洲国产成人porn| 国产精品久久一级| 精品欧美一区二区三区精品久久 | 色综合天天视频在线观看| 精品一区二区在线播放| 丝袜美腿亚洲一区| 亚洲韩国精品一区| 欧美日韩三级一区| 三级亚洲高清视频| 久久激情综合网| 97久久超碰国产精品| 精品中文av资源站在线观看| 亚洲品质自拍视频网站| 韩国理伦片一区二区三区在线播放 | 国产精品毛片高清在线完整版| 在线观看视频一区| 成人福利视频在线| 首页综合国产亚洲丝袜| 亚洲少妇30p| 一区二区三国产精华液| 日本午夜一本久久久综合| 午夜精品久久久久影视| 日本伊人午夜精品| 久久精品国产久精国产爱| 国产激情精品久久久第一区二区 | 午夜久久久久久久久| 美女视频免费一区| 日本丰满少妇一区二区三区| av在线播放一区二区三区| 视频一区二区不卡| 国产剧情一区二区三区| 欧美一级片在线| 欧美国产一区视频在线观看| 欧美经典一区二区| 一区二区久久久久| 麻豆精品一二三| 久草在线在线精品观看| 国产一区不卡视频| 成人性生交大片免费| 色婷婷av一区二区三区大白胸| 欧美日韩一本到| 久久亚洲影视婷婷| 国产欧美精品一区二区色综合朱莉| 国产欧美一区二区精品忘忧草 | 精品欧美一区二区久久| 久久精品无码一区二区三区 | 亚洲精品成人悠悠色影视| 午夜日韩在线观看| 久久99精品久久久久婷婷| 成人自拍视频在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩欧美一区中文| 日本一二三四高清不卡| 一区二区三区加勒比av| 东方欧美亚洲色图在线| 2024国产精品| 国产精品性做久久久久久| 日韩欧美自拍偷拍| 久久99国产精品免费网站| 国产xxx精品视频大全| 制服视频三区第一页精品| 久久久久久久久久美女| 蜜桃精品在线观看| 欧美视频在线一区| 亚洲永久精品国产| 97久久超碰国产精品电影| 欧美激情一区二区三区| 国产一区二区三区日韩| 欧美videos中文字幕| 午夜精品一区二区三区免费视频| 91视频在线看| 亚洲大片免费看| 97se亚洲国产综合自在线观| 中文无字幕一区二区三区| 日韩中文字幕1| 欧美色综合网站| 亚洲国产精华液网站w| 成人网在线播放| 又紧又大又爽精品一区二区| 国产成人午夜片在线观看高清观看 | 色综合色综合色综合| 国模娜娜一区二区三区| 亚洲成人自拍一区| 欧美一卡在线观看| 欧美日韩免费一区二区三区视频| 不卡av电影在线播放| 韩国欧美一区二区| 美女一区二区在线观看| 天天综合天天综合色| 亚洲精品免费在线播放| 中文字幕欧美区| 国产欧美日本一区视频| 中文一区在线播放| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 综合精品久久久| 国产精品家庭影院| 中文在线一区二区| 国产精品乱码人人做人人爱| 亚洲精品一区二区三区福利 | 91福利在线导航| 国产69精品一区二区亚洲孕妇| 精品一区二区免费| 国产激情偷乱视频一区二区三区| 国产呦萝稀缺另类资源| 国产精品一区二区久久不卡 | 国产精品国产三级国产普通话99| 2021中文字幕一区亚洲| 日本一区二区三区四区| 国产精品国产三级国产普通话蜜臀| 久久久午夜电影| 亚洲精品视频免费看| 亚洲成av人片一区二区梦乃| 日韩精品乱码免费| 另类小说视频一区二区| 92精品国产成人观看免费| 一本色道久久综合狠狠躁的推荐| 欧美性色欧美a在线播放| 欧美日韩国产一二三| 2023国产精华国产精品| 亚洲乱码日产精品bd| 日本成人超碰在线观看| 丁香另类激情小说| 911精品产国品一二三产区| 日韩一级片网站| 亚洲精品videosex极品| 美女视频免费一区| 91丝袜高跟美女视频| 91精品国产日韩91久久久久久| 久久影视一区二区| 日本在线不卡一区| 91视频精品在这里| 久久众筹精品私拍模特| 亚洲影视在线播放| 成人午夜精品一区二区三区| 91麻豆精品91久久久久久清纯 | 日韩一区二区三区四区五区六区| 国产精品拍天天在线| 日韩电影免费在线观看网站| 一本色道久久综合精品竹菊| 久久综合九色综合欧美就去吻| 午夜精品一区二区三区三上悠亚 | 欧美精品一区二区蜜臀亚洲| 17c精品麻豆一区二区免费| 亚洲无人区一区| 欧美视频在线观看一区| 亚洲精品中文在线| av激情综合网| 日本一区二区免费在线| 国产精品一区一区三区| 国产偷国产偷精品高清尤物| 久久99热国产| 国产亚洲精品中文字幕| 国产做a爰片久久毛片| 精品久久久久久亚洲综合网| 五月激情综合婷婷| 91精品国产91久久综合桃花| 亚洲一区精品在线| 欧美色电影在线| 日本中文在线一区| 久久综合精品国产一区二区三区| 极品瑜伽女神91| 欧美精品一区二区在线观看| 国产精品一区一区| 一区二区三区四区国产精品| 在线观看亚洲精品视频| 亚洲6080在线| 日韩精品一区二区三区三区免费| 青椒成人免费视频| 中文成人综合网| 91麻豆高清视频| 日韩制服丝袜先锋影音| 精品成人一区二区| 高清成人免费视频| 久久精品噜噜噜成人88aⅴ| 欧美激情在线一区二区三区| 欧美亚洲一区三区| 国产精品亚洲成人| 视频精品一区二区| 久久精品网站免费观看| 91久久精品国产91性色tv| 奇米影视在线99精品| 久久精品无码一区二区三区| 欧美日韩一区成人| 色综合久久久久| 国产精品一区二区三区乱码| 亚洲一区免费观看| 国产精品麻豆欧美日韩ww| 91黄视频在线观看| 99久久综合国产精品| 另类小说色综合网站| 夜夜揉揉日日人人青青一国产精品| 欧美大胆人体bbbb| 91麻豆精品国产91久久久久久久久| 99re这里只有精品视频首页| 亚洲mv在线观看|