B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 5|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROKÈí¼þ°²×¿½Å±¾FTPÉÏ´«ÏÂÔØÀý×Ó

[¸´ÖÆÁ´½Ó]

1096

Ö÷Ìâ

1101

Ìû×Ó

7661

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7661
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷

AIWROKÈí¼þ°²×¿½Å±¾FTPÉÏ´«ÏÂÔØÀý×Ó
AIWROKÈí¼þ°²×¿½Å±¾FTPÉÏ´«ÏÂÔØÀý×Ó B2BÍøÂçÈí¼þ

AIWROKÈí¼þ°²×¿½Å±¾FTPÉÏ´«ÏÂÔØÀý×Ó B2BÍøÂçÈí¼þ



  1. /**
  2. * AIWROK ¼òÒ×FTP¹¤¾ß - ´¿Java SocketʵÏÖ
  3. * ½»Á÷QQȺ: 711841924 (Ⱥһ) / 528816639 (Æ»¹û½Å±¾ÄÚ²âȺ)s
  4. */

  5. // ==================== FTPÅäÖÃ ====================
  6. // ÅäÖÃFTP·þÎñÆ÷Á¬½ÓÐÅÏ¢
  7. var FTPConfig = {
  8.     host: "38.67.75.157",      // FTP·þÎñÆ÷µØÖ·
  9.     port: 21,                   // FTP¶Ë¿Ú(ĬÈÏ21)
  10.     username: "fghgdfhfdh",           // µÇ¼Óû§Ãû
  11.     password: "aH6CEtK6X77J",   // µÇ¼ÃÜÂë
  12.     timeout: 60000,             // Á¬½Ó³¬Ê±Ê±¼ä(ºÁÃë)
  13.     encoding: "UTF-8"           // ×Ö·û±àÂë
  14. };

  15. // ==================== FTP¿Í»§¶Ë ====================
  16. // ʹÓÃIIFE(Á¢¼´Ö´Ðк¯Êý)´´½¨FTPClient¶ÔÏó
  17. // ·â×°ËùÓÐFTP²Ù×÷£¬±£³ÖÈ«¾ÖÃüÃû¿Õ¼äÇå½à
  18. var FTPClient = (function() {
  19.     // ˽ÓбäÁ¿ - FTPÁ¬½Ó״̬
  20.     var controlSocket = null;   // ¿ØÖÆÍ¨µÀSocket(·¢ËÍÃüÁî)
  21.     var dataSocket = null;      // Êý¾ÝͨµÀSocket(´«ÊäÎļþ)
  22.     var reader = null;          // ¿ØÖÆÍ¨µÀ¶ÁÈ¡Æ÷
  23.     var writer = null;          // ¿ØÖÆÍ¨µÀдÈëÆ÷
  24.     var isConnected = false;    // Á¬½Ó״̬±êÖ¾

  25.     /**
  26.      * ¶ÁÈ¡FTP·þÎñÆ÷ÏìÓ¦
  27.      * ´Ó¿ØÖÆÍ¨µÀ¶ÁȡһÐÐÎı¾
  28.      * @returns {string|null} ·þÎñÆ÷ÏìÓ¦µÄÎı¾£¬Ê§°Ü·µ»Ønull
  29.      */
  30.     function readResponse() {
  31.         try {
  32.             var line = reader.readLine();
  33.             if (line) console.log("FTP: " + line);
  34.             return line;
  35.         } catch (e) {
  36.             return null;
  37.         }
  38.     }

  39.     /**
  40.      * ·¢ËÍFTPÃüÁî²¢µÈ´ýÏìÓ¦
  41.      * @param {string} cmd - FTPÃüÁî(Èç USER, PASS, PASVµÈ)
  42.      * @returns {string|null} ·þÎñÆ÷ÏìÓ¦£¬Ê§°Ü·µ»Ønull
  43.      */
  44.     function sendCommand(cmd) {
  45.         try {
  46.             writer.write(cmd + "\r\n");  // FTPÃüÁîÒÔ\r\n½áβ
  47.             writer.flush();              // Á¢¼´·¢ËÍ
  48.             sleep.second(0.5);           // µÈ´ý·þÎñÆ÷ÏìÓ¦
  49.             return readResponse();       // ¶ÁÈ¡ÏìÓ¦
  50.         } catch (e) {
  51.             return null;
  52.         }
  53.     }

  54.     /**
  55.      * Á¬½ÓFTP·þÎñÆ÷²¢µÇ¼
  56.      * ½¨Á¢¿ØÖÆÍ¨µÀ£¬Íê³ÉÓû§ÈÏÖ¤
  57.      * @param {Object} config - FTPÅäÖöÔÏó(host, port, username, passwordµÈ)
  58.      * @returns {boolean} Á¬½Ó³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
  59.      */
  60.     function connect(config) {
  61.         try {
  62.             console.log("Á¬½ÓFTP: " + config.host);
  63.             
  64.             // 1. ´´½¨¿ØÖÆÍ¨µÀSocketÁ¬½Ó
  65.             controlSocket = new java.net.Socket(config.host, config.port);
  66.             controlSocket.setSoTimeout(config.timeout);  // ÉèÖó¬Ê±
  67.             
  68.             // 2. ´´½¨ÊäÈëÊä³öÁ÷(ʹÓÃÖ¸¶¨±àÂë)
  69.             var InputStreamReader = java.io.InputStreamReader;
  70.             var OutputStreamWriter = java.io.OutputStreamWriter;
  71.             var BufferedReader = java.io.BufferedReader;
  72.             var BufferedWriter = java.io.BufferedWriter;
  73.             
  74.             reader = new BufferedReader(new InputStreamReader(controlSocket.getInputStream(), config.encoding));
  75.             writer = new BufferedWriter(new OutputStreamWriter(controlSocket.getOutputStream(), config.encoding));
  76.             
  77.             // 3. ¶ÁÈ¡·þÎñÆ÷»¶Ó­ÏûÏ¢(220¿ªÍ·)
  78.             var welcome = readResponse();
  79.             if (!welcome || !welcome.startsWith("220")) {
  80.                 disconnect();
  81.                 return false;
  82.             }
  83.             
  84.             // 4. ¶ÁÈ¡ËùÓжàÐл¶Ó­ÏûÏ¢(Pure-FTPd»á·¢ËͶàÌõ220-¿ªÍ·µÄÏûÏ¢)
  85.             sleep.second(0.3);
  86.             var line;
  87.             while ((line = reader.readLine()) !== null) {
  88.                 if (!line.startsWith("220-")) break;  // Óöµ½·Ç220-µÄÐоÍÍ£Ö¹
  89.             }
  90.             
  91.             // 5. ·¢ËÍÓû§Ãû(USERÃüÁî)
  92.             var resp = sendCommand("USER " + config.username);
  93.             if (!resp || !resp.startsWith("331")) {  // 331±íʾÐèÒªÃÜÂë
  94.                 disconnect();
  95.                 return false;
  96.             }
  97.             
  98.             // 6. ·¢ËÍÃÜÂë(PASSÃüÁî)
  99.             resp = sendCommand("PASS " + config.password);
  100.             if (!resp || !resp.startsWith("230")) {  // 230±íʾµÇ¼³É¹¦
  101.                 disconnect();
  102.                 return false;
  103.             }
  104.             
  105.             console.log("✓ µÇ¼³É¹¦");
  106.             isConnected = true;
  107.             return true;
  108.             
  109.         } catch (e) {
  110.             console.log("Á¬½Óʧ°Ü: " + e.message);
  111.             disconnect();
  112.             return false;
  113.         }
  114.     }

  115.     /**
  116.      * ÉèÖñ»¶¯Ä£Ê½(PASV)
  117.      * FTP±»¶¯Ä£Ê½£º·þÎñÆ÷¿ªÆôÊý¾Ý¶Ë¿Ú£¬¿Í»§¶ËÁ¬½Ó
  118.      * ×Ô¶¯´¦ÀíÄÚÍøIPÓ³Éä(½«10.x.x.xÌæ»»Îª¹«ÍøIP)
  119.      * @returns {boolean} ÉèÖóɹ¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
  120.      */
  121.     function setupPassiveMode() {
  122.         try {
  123.             // ¹Ø±Õ¾ÉµÄÊý¾ÝͨµÀ
  124.             if (dataSocket) {
  125.                 try { dataSocket.close(); } catch(e) {}
  126.                 dataSocket = null;
  127.             }
  128.             
  129.             // ·¢ËÍPASVÃüÁ»ñÈ¡·þÎñÆ÷Êý¾Ý¶Ë¿Ú
  130.             var resp = sendCommand("PASV");
  131.             if (!resp || !resp.startsWith("227")) return false;  // 227±íʾ½øÈë±»¶¯Ä£Ê½
  132.             
  133.             // ½âÎöPASVÏìÓ¦: 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
  134.             var match = resp.match(/\(([^)]+)\)/);
  135.             if (!match) return false;
  136.             
  137.             var parts = match[1].split(",");
  138.             var port = parseInt(parts[4]) * 256 + parseInt(parts[5]);  // ¼ÆËã¶Ë¿ÚºÅ
  139.             var ip = parts[0] + "." + parts[1] + "." + parts[2] + "." + parts[3];
  140.             
  141.             // ÖØÒª£ºÈç¹û·þÎñÆ÷·µ»ØÄÚÍøIP£¬Ì滻ΪÅäÖõĹ«ÍøIP
  142.             // ÕâÊÇÒòΪFTP·þÎñÆ÷ÔÚNATºóÃæ£¬»á·µ»ØÄÚÍøµØÖ·
  143.             if (ip.startsWith("10.") || ip.startsWith("192.168.")) {
  144.                 console.log("¼ì²âµ½ÄÚÍøIP: " + ip + "£¬Ê¹Ó÷þÎñÆ÷µØÖ·: " + FTPConfig.host);
  145.                 ip = FTPConfig.host;
  146.             }
  147.             
  148.             // ´´½¨Êý¾ÝͨµÀSocketÁ¬½Ó
  149.             dataSocket = new java.net.Socket(ip, port);
  150.             dataSocket.setSoTimeout(60000);  // Êý¾Ý´«Ê䳬ʱ60Ãë
  151.             return true;
  152.         } catch (e) {
  153.             console.log("±»¶¯Ä£Ê½ÉèÖÃʧ°Ü: " + e.message);
  154.             return false;
  155.         }
  156.     }

  157.     /**
  158.      * ÉÏ´«Îļþµ½FTP·þÎñÆ÷
  159.      * ʹÓñ»¶¯Ä£Ê½´«Ê䣬֧³Ö¶þ½øÖÆÎļþ
  160.      * @param {string} localPath - ±¾µØÎļþ·¾¶(Èç /sdcard/test.txt)
  161.      * @param {string} remotePath - Ô¶³ÌÎļþ·¾¶(Èç /test.txt)
  162.      * @returns {boolean} ÉÏ´«³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
  163.      */
  164.     function upload(localPath, remotePath) {
  165.         if (!isConnected) return false;
  166.         
  167.         console.log("ÉÏ´«: " + localPath + " -> " + remotePath);
  168.         
  169.         // ¼ì²é±¾µØÎļþÊÇ·ñ´æÔÚ
  170.         var file = new java.io.File(localPath);
  171.         if (!file.exists()) {
  172.             console.log("Îļþ²»´æÔÚ: " + localPath);
  173.             return false;
  174.         }
  175.         
  176.         // ÉèÖñ»¶¯Ä£Ê½£¬½¨Á¢Êý¾ÝͨµÀ
  177.         if (!setupPassiveMode()) return false;
  178.         
  179.         // ·¢ËÍSTORÃüÁ׼±¸½ÓÊÕÎļþ
  180.         var resp = sendCommand("STOR " + remotePath);
  181.         if (!resp || !resp.startsWith("150")) return false;  // 150±íʾ׼±¸½ÓÊÕ
  182.         
  183.         // ¶ÁÈ¡±¾µØÎļþ²¢·¢Ë͵½Êý¾ÝͨµÀ
  184.         var fis = new java.io.BufferedInputStream(new java.io.FileInputStream(file));
  185.         var out = dataSocket.getOutputStream();
  186.         var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 4096);  // 4KB»º³åÇø
  187.         var len;
  188.         
  189.         while ((len = fis.read(buffer)) !== -1) {
  190.             out.write(buffer, 0, len);  // дÈëÊý¾ÝͨµÀ
  191.         }
  192.         
  193.         // ¹Ø±ÕÁ÷ºÍSocket
  194.         fis.close();
  195.         out.close();
  196.         dataSocket.close();
  197.         dataSocket = null;
  198.         
  199.         // ¶ÁÈ¡×îÖÕÏìÓ¦(226±íʾ´«ÊäÍê³É)
  200.         sleep.second(0.5);
  201.         var finalResp;
  202.         while ((finalResp = readResponse()) !== null) {
  203.             if (finalResp.startsWith("226 ")) {  // 226±íʾÎļþ´«Êä³É¹¦
  204.                 console.log("✓ ÉÏ´«³É¹¦");
  205.                 return true;
  206.             }
  207.         }
  208.         
  209.         return false;
  210.     }

  211.     /**
  212.      * ´ÓFTP·þÎñÆ÷ÏÂÔØÎļþ
  213.      * ʹÓñ»¶¯Ä£Ê½´«Ê䣬֧³Ö¶þ½øÖÆÎļþ
  214.      * @param {string} remotePath - Ô¶³ÌÎļþ·¾¶(Èç /test.txt)
  215.      * @param {string} localPath - ±¾µØ±£´æÂ·¾¶(Èç /sdcard/test.txt)
  216.      * @returns {boolean} ÏÂÔØ³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
  217.      */
  218.     function download(remotePath, localPath) {
  219.         if (!isConnected) return false;
  220.         
  221.         console.log("ÏÂÔØ: " + remotePath + " -> " + localPath);
  222.         
  223.         // ÉèÖñ»¶¯Ä£Ê½£¬½¨Á¢Êý¾ÝͨµÀ
  224.         if (!setupPassiveMode()) return false;
  225.         
  226.         // ·¢ËÍRETRÃüÁÇëÇóÏÂÔØÎļþ
  227.         var resp = sendCommand("RETR " + remotePath);
  228.         if (!resp || !resp.startsWith("150")) return false;  // 150±íʾ׼±¸·¢ËÍ
  229.         
  230.         // ´ÓÊý¾ÝͨµÀ½ÓÊÕÊý¾Ý²¢±£´æµ½±¾µØÎļþ
  231.         var fos = new java.io.BufferedOutputStream(new java.io.FileOutputStream(new java.io.File(localPath)));
  232.         var input = dataSocket.getInputStream();
  233.         var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 4096);  // 4KB»º³åÇø
  234.         var len;
  235.         var total = 0;
  236.         
  237.         console.log("¿ªÊ¼½ÓÊÕ...");
  238.         try {
  239.             var startTime = new Date().getTime();
  240.             var timeout = 30000;  // 30Ã볬ʱ±£»¤
  241.             
  242.             while ((len = input.read(buffer)) !== -1) {
  243.                 fos.write(buffer, 0, len);  // дÈë±¾µØÎļþ
  244.                 total += len;
  245.                
  246.                 // ¼ì²éÊÇ·ñ³¬Ê±
  247.                 var elapsed = new Date().getTime() - startTime;
  248.                 if (elapsed > timeout) {
  249.                     console.log("³¬Ê±: ÒѽÓÊÕ " + total + " ×Ö½Ú");
  250.                     break;
  251.                 }
  252.             }
  253.             console.log("½ÓÊÕÍê³É: " + total + " ×Ö½Ú");
  254.         } catch (e) {
  255.             console.log("½ÓÊÕ³ö´í: " + e.message);
  256.         }
  257.         
  258.         // ¹Ø±ÕÁ÷ºÍSocket
  259.         fos.close();
  260.         input.close();
  261.         dataSocket.close();
  262.         dataSocket = null;
  263.         
  264.         // ¶ÁÈ¡×îÖÕÏìÓ¦(226±íʾ´«ÊäÍê³É)
  265.         sleep.second(0.5);
  266.         var finalResp;
  267.         while ((finalResp = readResponse()) !== null) {
  268.             if (finalResp.startsWith("226 ")) {  // 226±íʾÎļþ´«Êä³É¹¦
  269.                 console.log("✓ ÏÂÔØ³É¹¦");
  270.                 return true;
  271.             }
  272.         }
  273.         
  274.         return false;
  275.     }

  276.     /**
  277.      * »ñÈ¡FTPĿ¼Áбí
  278.      * ʹÓÃLISTÃüÁî»ñȡָ¶¨Ä¿Â¼µÄÎļþÁбí
  279.      * @param {string} remotePath - Ô¶³ÌĿ¼·¾¶(Èç /)
  280.      * @returns {Array} ÎļþÁбíÊý×飬ÿ¸öÔªËØÊÇÒ»ÐÐLISTÊä³ö
  281.      */
  282.     function listDir(remotePath) {
  283.         if (!isConnected) return [];
  284.         
  285.         console.log("ÁгöĿ¼: " + remotePath);
  286.         
  287.         // ÉèÖñ»¶¯Ä£Ê½
  288.         if (!setupPassiveMode()) return [];
  289.         
  290.         // ·¢ËÍLISTÃüÁî
  291.         var resp = sendCommand("LIST " + remotePath);
  292.         if (!resp || !resp.startsWith("150")) return [];  // 150±íʾ׼±¸·¢ËÍÊý¾Ý
  293.         
  294.         // ´ÓÊý¾ÝͨµÀ¶ÁȡĿ¼Áбí
  295.         var dirReader = new java.io.BufferedReader(
  296.             new java.io.InputStreamReader(dataSocket.getInputStream(), "UTF-8")
  297.         );
  298.         
  299.         var files = [];
  300.         var line;
  301.         while ((line = dirReader.readLine()) !== null) {
  302.             if (line.trim()) files.push(line);  // Ìø¹ý¿ÕÐÐ
  303.         }
  304.         
  305.         // ¹Ø±Õ¶ÁÈ¡Æ÷ºÍSocket
  306.         dirReader.close();
  307.         dataSocket.close();
  308.         dataSocket = null;
  309.         
  310.         // ¶ÁÈ¡×îÖÕÏìÓ¦(226±íʾ´«ÊäÍê³É)
  311.         sleep.second(0.5);
  312.         var finalResp;
  313.         while ((finalResp = readResponse()) !== null) {
  314.             if (finalResp.startsWith("226 ")) break;  // ÕÒµ½×îÖÕµÄ226ÏìÓ¦
  315.         }
  316.         
  317.         console.log("ÕÒµ½ " + files.length + " ¸öÌõÄ¿");
  318.         return files;
  319.     }

  320.     /**
  321.      * ¶Ï¿ªFTPÁ¬½Ó
  322.      * ¹Ø±ÕËùÓÐSocketºÍÁ÷£¬ÊÍ·Å×ÊÔ´
  323.      */
  324.     function disconnect() {
  325.         try {
  326.             // ¹Ø±ÕÊý¾ÝͨµÀ
  327.             if (dataSocket) {
  328.                 try { dataSocket.close(); } catch(e) {}
  329.                 dataSocket = null;
  330.             }
  331.             
  332.             // ¹Ø±Õ¿ØÖÆÍ¨µÀ
  333.             if (controlSocket) {
  334.                 try {
  335.                     writer.write("QUIT\r\n");  // ·¢ËÍQUITÃüÁî
  336.                     writer.flush();
  337.                 } catch(e) {}
  338.                 try { controlSocket.close(); } catch(e) {}
  339.                 controlSocket = null;
  340.             }
  341.             
  342.             // ¹Ø±ÕÁ÷
  343.             if (reader) { try { reader.close(); } catch(e) {} reader = null; }
  344.             if (writer) { try { writer.close(); } catch(e) {} writer = null; }
  345.             
  346.             isConnected = false;
  347.             console.log("ÒѶϿª");
  348.         } catch (e) {
  349.             // ºöÂÔ¶Ï¿ªÊ±µÄ´íÎó
  350.         }
  351.     }

  352.     // ¹«¿ªAPI - Ö»±©Â¶Õâ5¸ö·½·¨
  353.     return {
  354.         connect: connect,       // Á¬½ÓFTP·þÎñÆ÷
  355.         disconnect: disconnect, // ¶Ï¿ªÁ¬½Ó
  356.         upload: upload,         // ÉÏ´«Îļþ
  357.         download: download,     // ÏÂÔØÎļþ
  358.         listDir: listDir        // »ñȡĿ¼Áбí
  359.     };
  360. })();

  361. // ==================== ²âÊÔ´úÂë ====================
  362. /**
  363. * Ö÷º¯Êý - ÑÝʾFTP¹¤¾ßµÄÈý¸öºËÐŦÄÜ
  364. * 1. Á¬½ÓFTP·þÎñÆ÷
  365. * 2. ²é¿´Ä¿Â¼Áбí
  366. * 3. ÉÏ´«Îļþ
  367. * 4. ÏÂÔØÎļþ
  368. * 5. ¶Ï¿ªÁ¬½Ó
  369. */
  370. function main() {
  371.     console.log("========== FTP¼òÒ×¹¤¾ß ==========\n");
  372.    
  373.     // 1. Á¬½ÓFTP·þÎñÆ÷
  374.     if (!FTPClient.connect(FTPConfig)) {
  375.         console.log("Á¬½Óʧ°Ü");
  376.         return;
  377.     }
  378.    
  379.     sleep.second(1);  // µÈ´ý1Ãë
  380.    
  381.     // 2. ²é¿´¸ùĿ¼ÎļþÁбí
  382.     console.log("\n--- ²é¿´¸ùĿ¼ ---");
  383.     var files = FTPClient.listDir("/");
  384.     for (var i = 0; i < files.length; i++) {
  385.         console.log("  " + files[i]);
  386.     }
  387.    
  388.     sleep.second(1);  // µÈ´ý1Ãë
  389.    
  390.     // 3. ÉÏ´«Îļþ²âÊÔ
  391.     console.log("\n--- ÉÏ´«²âÊÔ ---");
  392.     FTPClient.upload("/sdcard/test.txt", "/test_upload.txt");
  393.    
  394.     sleep.second(1);  // µÈ´ý1Ãë
  395.    
  396.     // 4. ÏÂÔØÎļþ²âÊÔ
  397.     console.log("\n--- ÏÂÔØ²âÊÔ ---");
  398.     FTPClient.download("/2.txt", "/sdcard/2_downloaded.txt");
  399.    
  400.     sleep.second(1);  // µÈ´ý1Ãë
  401.    
  402.     // 5. ¶Ï¿ªÁ¬½Ó
  403.     FTPClient.disconnect();
  404.    
  405.     console.log("\n========== Íê³É ==========");
  406. }

  407. // Ö´ÐÐÖ÷º¯Êý
  408. main();
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-5-18 19:24 , Processed in 0.217823 second(s), 36 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí