ถัดไปบทความก่อนหน้าจะถูกอัปโหลดและดาวน์โหลด
5. การกลับมาพัก
สำหรับโปรแกรมเมอร์ที่คุ้นเคยกับ QQ ฟังก์ชั่นการส่งสัญญาณอย่างต่อเนื่องของ QQ ควรจะน่าประทับใจมาก เพราะมันใช้งานได้จริงและมีแง่มุม ดังนั้นในระหว่างกระบวนการอัปโหลดและดาวน์โหลดของเราฟังก์ชั่นของการส่งสัญญาณอย่างต่อเนื่องของเบรกพอยต์จึงถูกนำไปใช้อย่างดี
ในความเป็นจริงหลักการของการส่งสัญญาณอย่างต่อเนื่องเบรกพอยต์นั้นง่ายมาก ในระหว่างกระบวนการอัปโหลดให้ไปที่บริการเพื่อดูว่าไฟล์นี้มีอยู่หรือไม่ หากมีไฟล์บางไฟล์ให้เปรียบเทียบขนาดของไฟล์บนเซิร์ฟเวอร์ที่มีขนาดของไฟล์โลคัล หากไฟล์บนเซิร์ฟเวอร์มีขนาดเล็กกว่าไฟล์ในเครื่องมีความเชื่อกันว่าการส่งสัญญาณอย่างต่อเนื่องควรเป็นไปได้ในระหว่างกระบวนการอัปโหลดของไฟล์นี้
ในระหว่างการใช้งานคลาส RandomAccessFile จะมีประโยชน์ อินสแตนซ์ของการสนับสนุนคลาสนี้อ่านและเขียนไปยังไฟล์การเข้าถึงแบบสุ่ม ไฟล์การเข้าถึงแบบสุ่มทำงานเหมือนอาร์เรย์ไบต์ขนาดใหญ่ที่เก็บไว้ในระบบไฟล์ มีเคอร์เซอร์หรือดัชนีชี้ไปที่อาร์เรย์โดยนัยเรียกว่าตัวชี้ไฟล์ การดำเนินการอินพุตจะอ่านไบต์จากตัวชี้ไฟล์และเลื่อนไปข้างหน้าตัวชี้ไฟล์เมื่ออ่านไบต์ หากไฟล์การเข้าถึงแบบสุ่มถูกสร้างขึ้นในโหมดอ่าน/เขียนการดำเนินการส่งออกก็พร้อมใช้งาน การดำเนินการเอาต์พุตเริ่มต้นด้วยตัวชี้ไฟล์และก้าวหน้าตัวชี้ไฟล์เป็นไบต์ที่เขียนขึ้น การดำเนินการส่งออกหลังจากเขียนถึงปลายปัจจุบันของอาร์เรย์โดยนัยทำให้อาร์เรย์ขยาย ตัวชี้ไฟล์สามารถอ่านผ่านวิธี getFilePointer และตั้งค่าผ่านวิธีการค้นหา
วิธีการ skipbytes ของคลาส RandomaccessFile พยายามข้ามอินพุต N ไบต์เพื่อทิ้งไบต์ที่ข้าม หากคุณพบขนาด n ของไฟล์ที่จะอัปโหลดจากเซิร์ฟเวอร์คุณสามารถใช้วิธีการ skipbytes เพื่อข้าม n bytes เหล่านี้และเริ่มทำการส่งสัญญาณเบรกพอยต์อย่างต่อเนื่องจากสถานที่ใหม่ สำหรับวิธีการเฉพาะโปรดดูคำอธิบาย API ของ JDK5
คุณสามารถเห็นการใช้งานการอัปโหลดและดาวน์โหลดจุดส่งสัญญาณอินเตอร์รัปต์อย่างต่อเนื่องในวิธีการเรียกใช้ของคลาส Dataconnection รหัสมีดังนี้:
โมฆะสาธารณะเรียกใช้ () {ลอง {newLine = con.getcrlf (); if (settings.getFtPPASVMode ()) {ลอง {sock = ซ็อกเก็ตใหม่ (โฮสต์พอร์ต); Sock.setSotimeout (settings.getSocketTimeOut ()); } catch (exception ex) {ok = false; การดีบัก ("ไม่สามารถเปิดซ็อกเก็ตบนพอร์ต" + พอร์ต); }} else {//log.debug("trying ซ็อกเก็ตเซิร์ฟเวอร์ใหม่: "+พอร์ต); ลอง {ssock = ใหม่ Serversocket (พอร์ต); } catch (exception ex) {ok = false; log.debug ("ไม่สามารถเปิด Serversocket บนพอร์ต" + พอร์ต); }}} catch (Exception ex) {debug (ex.toString ()); } isthere = true; บูลีนตกลง = จริง; RandomaccessFile fout = null; bufferedOutputStream bout = null; FIN แบบสุ่ม FIL = NULL; ลอง {ถ้า (! settings.getftPpasVMode ()) {int retry = 0; ในขณะที่ ((retry ++ <5) && (sock == null)) {ลอง {ssock.setsotimeout (settings.connectiontimeout); ถุงเท้า = ssock.accept (); } catch (ioexception e) {sock = null; DEBUG ("Got IOException ในขณะที่พยายามเปิดซ็อกเก็ต!"); ถ้า (retry == 5) {debug ("การเชื่อมต่อล้มเหลวลอง 5 ครั้ง - อาจลองใช้เวลาหมดเวลาที่สูงขึ้นในการตั้งค่า Java"); } เสร็จสิ้น = true; โยน e; } ในที่สุด {ssock.close (); } debug ("พยายามหมดเวลาลองใหม่"); }} ถ้า (ตกลง) {byte [] buf = byte ใหม่ [settings.buffersize]; start = system.currentTimeMillis (); int buflen = 0; // --------------- ดาวน์โหลด, 下载 -------------------------- ถ้า (type.equals (get) || type.equals (getDir)) {ถ้า (! JustStream) {ลอง {if (resume) {ไฟล์ f = ไฟล์ใหม่ (ไฟล์); fout = new randomaccessFile (ไฟล์, "rw"); fout.skipbytes ((int) f.length ()); buflen = (int) f.length (); } else {ถ้า (localfile == null) {localFile = ไฟล์; } ไฟล์ f2 = ไฟล์ใหม่ (settings.aphomedir); f2.mkdirs (); ไฟล์ f = ไฟล์ใหม่ (localfile); if (f.exists ()) {f.delete (); } bout = ใหม่ bufferedOutputStream (ใหม่ fileOutputStream (localFile), settings.buffersize); }} catch (exception ex) {debug ("ไม่สามารถสร้าง outputFile:" + ไฟล์); ตกลง = เท็จ; Ex.PrintStackTrace (); }} // --------------- อัปโหลด, 上传 ---------------------- ถ้า (type.equals (ใส่) || type.equals (putdir)) {ถ้า (ใน == null) {ลอง {fin = new randomaccessFile (ไฟล์, "r"); if (ประวัติย่อ) {fin.skipbytes (Skiplen); } // fin = ใหม่ bufferedInputStream (ใหม่ FileInputStream (ไฟล์)); } catch (exception ex) {debug ("ไม่สามารถเปิด inputfile:" + "(" + ex + ")"); ตกลง = เท็จ; }} ถ้า (ตกลง) {ลอง {out = ใหม่ bufferedOutputStream (sock.getOutputStream ()); } catch (exception ex) {ok = false; DEBUG ("ไม่สามารถรับ OutputStream"); } ถ้า (ตกลง) {ลอง {int len = skiplen; Char B; ในขณะที่ (จริง) {int อ่าน; if (in! = null) {read = in.read (buf); } else {read = fin.read (buf); } len += อ่าน; //system.out.println(file + "" + type + "" + len + "" + อ่าน); if (read == -1) {break; } if (newLine! = null) {byte [] buf2 = modifyput (buf, อ่าน); out.write (buf2, 0, buf2.length); } else {out.write (buf, 0, อ่าน); } con.fireProgressUpdate (ไฟล์, ประเภท, len); if (time ()) {// log.debugsize (len, false, false, ไฟล์); } if (read == streamTokenizer.tt_eof) {break; }} out.flush (); //log.debugsize(len, เท็จ, จริง, ไฟล์); } catch (ioexception ex) {ok = false; DEBUG ("ข้อผิดพลาด: การเชื่อมต่อข้อมูลปิด"); Con.fireProgressUpdate (ไฟล์, ล้มเหลว, -1); Ex.PrintStackTrace (); }}}}}}} catch (ioexception ex) {log.debug ("ไม่สามารถเชื่อมต่อซ็อกเก็ตกับ Serversocket"); Ex.PrintStackTrace (); } ในที่สุด {ลอง {ถ้า (ออก! = null) {out.flush (); out.close (); }} catch (Exception ex) {ex.printstacktrace (); } ลอง {ถ้า (bout! = null) {bout.flush (); Bout.close (); }} catch (Exception ex) {ex.printstacktrace (); } ลอง {ถ้า (fout! = null) {fout.close (); }} catch (Exception ex) {ex.printstacktrace (); } ลอง {ถ้า (ใน! = null &&! JustStream) {in.close (); } if (fin! = null) {fin.close (); }} catch (Exception ex) {ex.printstacktrace (); }} ลอง {sock.close (); } catch (exception ex) {debug (ex.toString ()); } if (! settings.getftPpasVMode ()) {ลอง {ssock.close (); } catch (exception ex) {debug (ex.toString ()); }} เสร็จสิ้น = true; ถ้า (ตกลง) {Con.fireProgressUpdate (ไฟล์เสร็จแล้ว -1); } else {con.fireprogressupdate (ไฟล์, ล้มเหลว, -1); - 6. การทำแผนที่พอร์ต FTP
การเชื่อมต่อข้อมูล FTP มีสองประเภท: PASV และพอร์ต หากเซิร์ฟเวอร์ FTP ของคุณอยู่ในอินทราเน็ตคุณต้องใช้การแมปพอร์ต ในตอนแรกฉันไม่รู้อะไรมากเกี่ยวกับการแมปเครือข่ายภายนอกของ FTP ดังนั้นฉันจึงเริ่มใช้เวลาหลายทาง ตอนแรกฉันคิดเสมอว่ามีบางอย่างผิดปกติกับโปรแกรมของฉันและเสียเวลาไปมาก ฉันหวังว่าตลอดช่วงเวลานี้ทุกคนสามารถใช้เวลาและพลังงานที่ไม่จำเป็นในระหว่างการพัฒนาน้อยลงหรือไม่มีเลย
มีบทความเกี่ยวกับ PCD ที่แนะนำวิธีการเข้าถึงอินทราเน็ตโดยตรง ในความเป็นจริงตราบใดที่เราใช้เครื่องมือการทำแผนที่พอร์ตเราสามารถบรรลุวัตถุประสงค์ในการเจาะอินทราเน็ตได้อย่างง่ายดาย "Port Mapper" เป็นเครื่องมือ สิ่งที่ควรค่าแก่การกล่าวถึงคือการกำจัดโหมดบรรทัดคำสั่งและให้สภาพแวดล้อมการทำงานของอินเทอร์เฟซแบบกราฟิก
เพื่อให้คุณเข้าใจมากขึ้นให้ฉันพูดถึงหลักการก่อน สมมติว่าตอนนี้มี LAN ที่มีโฮสต์ A. นอกเหนือจากโฮสต์แล้วยังมีเครื่องจักรใน LAN ที่มี B. แน่นอนว่าเครื่อง B กำลังท่องอินเทอร์เน็ตผ่านโฮสต์ A. นอกจากนี้ยังมีเครื่องจักรที่สามารถเข้าถึงอินเทอร์เน็ตซึ่งไม่ได้อยู่ใน LAN เดียวกับ A และ B มันจะถ่ายโอนข้อมูลบนพอร์ตที่ระบุไปยังพอร์ตที่ระบุของเครื่องอื่นใน LAN ซึ่งจะบรรลุวัตถุประสงค์ในการเข้าถึงเครื่องอินทราเน็ต พูดแบบนี้ทุกคนเข้าใจ สำหรับวิธีการกำหนดค่าผู้เขียนเชื่อว่ามันไม่ควรเป็นงานที่ยาก นอกจากนี้ยังมีคำอธิบายกราฟิกมากมายบนอินเทอร์เน็ต โปรดดูบทความบนอินเทอร์เน็ตเพื่อตั้งค่า
แน่นอนว่าข้อดีของการตระหนักถึงการเข้าถึงอินทราเน็ตโดยตรงนั้นชัดเจน ไม่ต้องพูดถึงสิ่งอื่นใดอย่างน้อยก็มีการใช้ทรัพยากร FTP อย่างสมบูรณ์ อย่างไรก็ตามจะต้องได้รับการเตือนว่าการเข้าถึงอินทราเน็ตโดยตรงอาจคุกคามความปลอดภัยของอินทราเน็ต ผู้เขียนเชื่อว่าเพื่อนส่วนใหญ่ยังคงให้ความสำคัญกับความสำคัญของความปลอดภัยของโฮสต์ แต่พวกเขามักจะเพิกเฉยต่อการตั้งค่าความปลอดภัยของเครื่องอินทราเน็ต เมื่อคุณประสบความสำเร็จในการเข้าถึงอินทราเน็ตโดยตรงคุณต้องปฏิบัติต่อเครื่องอินทราเน็ตเช่นโฮสต์มิฉะนั้นเครือข่ายทั้งหมดของคุณอาจตกอยู่ในอันตราย
เข้าถึงแหล่งข้อมูลลูกค้า
นโยบายความปลอดภัยของสภาพแวดล้อมแอปพลิเคชัน Java ซึ่งแสดงโดยวัตถุนโยบายสำหรับการอนุญาตของทรัพยากรต่าง ๆ ที่เป็นเจ้าของโดยรหัสที่แตกต่างกัน เพื่อให้แอปเพล็ต (หรือแอปพลิเคชันที่ทำงานภายใต้ SecurityManager) เพื่อดำเนินการพฤติกรรมที่ได้รับการป้องกันเช่นการอ่านและการเขียนไฟล์แอปเพล็ต (หรือแอปพลิเคชัน Java) จะต้องได้รับอนุญาตสำหรับการดำเนินการนั้นและไฟล์นโยบายความปลอดภัยใช้เพื่อใช้การอนุญาตเหล่านี้
วัตถุนโยบายอาจมีหลายหน่วยงานแม้ว่าจะมีเพียงหนึ่งเดียวเท่านั้นที่สามารถทำงานได้ตลอดเวลา วัตถุนโยบายที่ติดตั้งในปัจจุบันสามารถรับได้ในโปรแกรมโดยเรียกใช้วิธี getPolicy หรือเปลี่ยนแปลงโดยการเรียกใช้วิธี setPolicy วัตถุนโยบายประเมินนโยบายทั้งหมดส่งคืนวัตถุการอนุญาตที่เหมาะสมซึ่งรายละเอียดรหัสใดที่สามารถเข้าถึงทรัพยากรได้ ไฟล์นโยบายสามารถเก็บไว้ในไฟล์ ASCII ที่ไม่ได้ฟอร์มหรือในไฟล์ไบนารีหรือฐานข้อมูลของคลาสนโยบาย บทความนี้กล่าวถึงรูปแบบของไฟล์ ASCII ที่ไม่ได้ฟอร์ม
ในการใช้งานจริงเราไม่จำเป็นต้องเขียนไฟล์ Java.policy ที่ซับซ้อนเช่นนี้โดยเฉพาะเมื่อเราไม่ใช้ลายเซ็นดิจิตอล ในเวลานี้เราสามารถเรียนรู้ได้อย่างสมบูรณ์จากไฟล์ C:/โปรแกรมโปรแกรม/Java/jre1.5.0_12/lib/security/java.policy ไฟล์ที่จัดหาให้เราโดย JRE และทำการปรับเปลี่ยนที่สอดคล้องกันตามความต้องการของเรา บทความนี้จะเขียนไฟล์นโยบายความปลอดภัยสำหรับสถานการณ์ที่ไม่ได้ใช้ลายเซ็นดิจิทัล ด้านล่างเป็นไฟล์ Java.policy ที่ใช้งานภายใต้ Windows NT/XP ในไฟล์วัตถุประสงค์ของบันทึก "การอนุญาต" แต่ละรายการจะอธิบายแยกต่างหากโดยใช้ความคิดเห็น แน่นอนว่าโปรแกรมที่แตกต่างกันอาจมีข้อกำหนดที่แตกต่างกันสำหรับสิทธิ์ในการเข้าถึงทรัพยากรและสามารถปรับและเลือกได้ตามความต้องการของโครงการ
ให้ {// อนุญาตให้ "อ่าน" ระบบและไดเรกทอรีผู้ใช้สิทธิ์ java.util.propertypermission "user.dir", "อ่าน"; สิทธิ์ java.util.propertypermission "user.home", "อ่าน"; การอนุญาต java.util.propertypermission "java.home", "อ่าน"; การอนุญาต java.util.propertypermission "java.home", "อ่าน"; การอนุญาต java.util.propertypermission "java.class.pat", "อ่าน"; สิทธิ์ java.util.propertypermission "user.name", "อ่าน"; // สิทธิ์การดำเนินงานในเธรดและกลุ่มเธรดที่ได้รับอนุญาต java.lang.runtimePermission "AccessClassInPackage.sun.misc"; การอนุญาต java.lang.runtimePermission "AccessClassInPackage.sun.audio"; การอนุญาต java.lang.runtimePermission "ModifyThread"; สิทธิ์ java.lang.runtimePermission "ModifyThreadGroup"; การอนุญาต java.lang.runtimePermission "loadlibrary.*"; // อนุญาตให้อ่านและเขียนไฟล์ที่อนุญาต java.io.filePermission "<< ไฟล์ทั้งหมด >>", "อ่าน"; สิทธิ์ java.io.filepermission "$ {user.dir} $ {/} jmf.log", "เขียน"; สิทธิ์ java.io.filepermission "$ {user.home} $ {/}. jmstudiocfg", "เขียน"; สิทธิ์ java.net.socketpermission "*", "เชื่อมต่อ, ยอมรับ"; การอนุญาต java.io.filepermission "c:/winnt/temp/*", "เขียน"; การอนุญาต java.io.filepermission "c:/winnt/temp/*", "ลบ"; การอนุญาต java.awt.awtpermission "showwindowwithoutwarningbanner"; อนุญาต javax.sound.sampled.audiopermission "บันทึก"; // // สิทธิ์ต่าง ๆ สำหรับการใช้งานพอร์ตซ็อกเก็ตที่ได้รับอนุญาต java.net.socketpermission "-", "ฟัง"; การอนุญาต java.net.socketpermission "-", "ยอมรับ"; สิทธิ์ java.net.socketpermission "-", "เชื่อมต่อ"; สิทธิ์ java.net.socketpermission "-", "แก้ไข"; การอนุญาต java.security.allpermission; - Grant Signedby "Saili" {อนุญาต java.net.socketpermission "*: 1024-65535", "เชื่อมต่อ, ยอมรับ, แก้ไข"; สิทธิ์ java.net.socketpermission "*: 80", "เชื่อมต่อ"; การอนุญาต java.net.socketpermission "-", "ฟัง, ยอมรับ, เชื่อมต่อ, ฟัง, แก้ไข", ลงนามโดย "Ganja"; การอนุญาต java.net.socketpermission "-", "ยอมรับ"; สิทธิ์ java.net.socketpermission "-", "เชื่อมต่อ"; สิทธิ์ java.net.socketpermission "-", "แก้ไข"; การอนุญาต java.security.allpermission; - ในโครงการนี้เพื่อให้สะดวกและง่ายต่อการใช้การตั้งค่าผู้ใช้ไคลเอนต์ไฟล์ด้านบนถูกสร้างขึ้นเป็นโปรแกรมขนาดเล็กโดยใช้ VB หรือ C# จากนั้นรวม JRE และบางส่วนลงในแพ็คเกจ EXE หลังจากติดตั้ง JRE แล้วแอปเพล็ตนี้มีหน้าที่ในการค้นหาเส้นทางการติดตั้งของ JRE ในระบบปฏิบัติการและเขียนไฟล์ Java.policy ในโปรแกรมเพื่อเขียนทับไฟล์ต้นฉบับ ด้วยวิธีนี้ผู้ใช้จะต้องติดตั้งไฟล์ EXE เท่านั้นซึ่งทำให้จำนวนการติดตั้งง่ายขึ้น
7. เซิร์ฟเวอร์การโทรกลับของ Applet
ความสามารถของ JavaScript และ Applet ในการสื่อสารซึ่งกันและกันทำให้เราสะดวกสบายมาก Java และ JavaScript เสริมซึ่งกันและกันเพื่อพัฒนาเว็บแอปพลิเคชันที่สมบูรณ์แบบมากขึ้น B/S สามารถใช้ประโยชน์จากข้อดีของ Java ได้อย่างเต็มที่นำประสบการณ์เครือข่ายให้เรามากขึ้นและทำให้ผู้ใช้สะดวกมากขึ้น ผู้เขียนใช้แอพพลิเคชั่นเพิ่มเติมที่พัฒนาขึ้นโดยส่วนประกอบสวิงเพื่อใช้สถาปัตยกรรม B/S โดยใช้แอปเพล็ตซึ่งสามารถแสดงให้เห็นถึงข้อดีของส่วนประกอบสวิงอย่างเต็มที่ช่วยอำนวยความสะดวกในการอัพเกรดและดูแลระบบ นอกจากนี้ภายใต้เว็บบางครั้งลูกค้าจำเป็นต้องใช้ทรัพยากรฮาร์ดแวร์ในท้องถิ่น สิ่งที่ฉันรู้คือมันถูกนำไปใช้ผ่านแอปเพล็ตและเรียก Java API ผ่านแอปเพล็ต มาดูกันว่า JavaScript และ Applet สื่อสารรายละเอียดอย่างไร
1. Javascript Access applet
<Applet name = "AppleTname" .... /// JavaScript Accesses Applet Properties
window.document.appletName.appletfield (คุณสมบัติจะต้องเป็นสาธารณะ "window.document." สามารถเขียนได้โดยไม่ต้องเขียน) // JavaScript เข้าถึงวิธี Applet
window.document.appletName.appletMethod (วิธีการต้องเป็นสาธารณะ "window.document." สามารถเขียนได้โดยไม่ต้องเขียน)
2. การเข้าถึง JavaScript
Live Connect ให้อินเทอร์เฟซระหว่าง Java และ JavaScript ซึ่งอนุญาตให้ใช้ JavaScript ในแอปเพล็ต Java
คุณต้องใช้แพ็คเกจ JAR และค้นหาในไฟล์ C:/โปรแกรม/Java/Directory มันประมาณ 5 เมตร ในความเป็นจริงมันเป็นเพียงการเปิดเพื่อดูว่าอันไหนมี netscape.javascript.jsobject หากคุณไม่ได้ติดตั้ง NetScape หรือคุณสามารถทำได้ทางออนไลน์หรือออฟไลน์ คุณสามารถเปลี่ยนชื่อเป็น netscape.jar (ไม่จำเป็น) และต้องเพิ่มลงใน classpath โดยมีวัตถุประสงค์เพื่อรวบรวมในระหว่างการพัฒนา เป็นสิ่งสำคัญอย่างยิ่งที่จะต้องทราบว่าไม่จำเป็นต้องรวม NetScape.jar ในระหว่างการปรับใช้เนื่องจากแพ็คเกจทั้งหมดจะถูกดาวน์โหลดไปยังลูกค้าซึ่งมีผลต่อความเร็ว
// แนะนำ NetScape Class Import NetScape.javascript.jsobject; นำเข้า netScape.javascript.jsexception; // สามารถอนุญาตให้จัดการเหตุการณ์ข้อยกเว้นใน Applets Public Void Calljavascript (สตริง callbackjavascript) {jsobject window = jsobject.getWindow (นี่); // รับที่จับหน้าต่าง JavaScript และอ้างถึงหน้าต่างเอกสารปัจจุบัน JSObject Document = (JSObject) window.getMember ("เอกสาร"); Form = (JSObject) doc.getMember ("textForm"); // เข้าถึงออบเจ็กต์ฟอร์ม JavaScript Object = (JSObject) Form.getMember ("TextField"); เข้าถึง text text text ข้อความ JavaScript = (string) textfield.getMember ("value"); // รับค่าของพื้นที่ข้อความ // เรียกวิธีการแจ้งเตือนของ JavaScript () // window.eval ("การแจ้งเตือน (/" การแจ้งเตือนนี้มาจาก java!/")"); window.call (callbackjavascript, null); // พารามิเตอร์จะแสดงในรูปแบบของอาร์เรย์ -8. ผลการดำเนินงาน
1. อัปโหลด
(1). เริ่มอัปโหลด
(2). การอัพโหลด
(3). การอัพโหลด
(4). อัปโหลดสำเร็จ
2. ดาวน์โหลด
(1) บันทึก Path of Download File
(2) การดาวน์โหลด
(3) การดาวน์โหลด
(4) ดาวน์โหลดได้สำเร็จ
9. สรุป
ในบทความนี้ผู้เขียนจะอธิบายวิธีแก้ปัญหาการอัปโหลดและดาวน์โหลดในโครงการจริงและใช้โปรโตคอล FTP เพื่อให้ได้แบทช์, การอัปโหลดและดาวน์โหลดไฟล์เว็บขนาดใหญ่พื้นฐาน ในขณะเดียวกันก็สามารถเข้าถึงทรัพยากรในท้องถิ่นบนลูกค้าผ่านเทคโนโลยีแอปเพล็ต การอภิปรายเบื้องต้นได้ดำเนินการกับฟังก์ชั่นจริงบางอย่างที่ผู้คนมักจะพบเช่นแถบความคืบหน้าการส่งสัญญาณอย่างต่อเนื่องเบรกพอยต์การแมปเครือข่ายภายในและภายนอก FTP ฯลฯ นี่เป็นแอปพลิเคชันพื้นฐานของผู้เขียนตามไลบรารีไคลเอนต์ Java FTP บางแห่ง ฉันหวังว่ามันจะเป็นข้อมูลอ้างอิงสำหรับผู้อ่าน เสริมบางเรื่องที่ยังไม่เสร็จเหล่านี้ นอกจากนี้ยังมีเนื้อหาบางอย่างที่ค่อนข้างง่ายและมีคำอธิบายหรือตัวอย่างออนไลน์ที่ไม่ได้ระบุไว้ที่นี่ ตัวอย่างเช่นวิธีการที่ FTP สามารถสร้างบริการ FTP บนซอฟต์แวร์ฝั่งเซิร์ฟเวอร์ Serv-U วิธีการฝังตัวในหน้า JSP และวิธีการส่งพารามิเตอร์และวิธีการเริ่มต้นของแอปเปิลภายใต้ eclipse หรือ NetBeans เนื่องจากข้อ จำกัด ด้านพื้นที่ไม่มีคำอธิบายโดยละเอียด โปรดดูตัวอย่างหรือเอกสารอ้างอิงอื่น ๆ บนอินเทอร์เน็ต
ดาวน์โหลดที่อยู่: http://xiazai.vevb.com/201608/yuanma/ftptransfer(vevb.com).rar
หมายเหตุ: เมื่อพิจารณาถึงปัญหาลิขสิทธิ์ไฟล์คลาส Java ไม่ได้ถูกส่งขึ้นมา แต่ฉันคิดว่าทุกคนคุ้นเคยกับวิธีการกู้คืนไฟล์ Jar ดังกล่าวไปยังไฟล์ Java ฮ่าฮ่า
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น