1. ปัญหาหลักสองประการในการเขียนโปรแกรมเครือข่าย
หนึ่งคือวิธีการค้นหาโฮสต์อย่างน้อยหนึ่งรายการในเครือข่ายและอีกอย่างคือวิธีการส่งข้อมูลอย่างน่าเชื่อถือและมีประสิทธิภาพหลังจากค้นหาโฮสต์
ในโปรโตคอล TCP/IP ชั้น IP ส่วนใหญ่รับผิดชอบตำแหน่งของโฮสต์เครือข่ายและการกำหนดเส้นทางของการส่งข้อมูล ที่อยู่ IP สามารถกำหนดโฮสต์บนอินเทอร์เน็ตได้โดยเฉพาะ
เลเยอร์ TCP มีกลไกการส่งข้อมูลที่เชื่อถือได้ (TCP) หรือไม่น่าเชื่อถือ (UDP) สำหรับแอปพลิเคชันซึ่งเป็นวัตถุหลักของการเขียนโปรแกรมเครือข่ายและโดยทั่วไปไม่จำเป็นต้องใส่ใจเกี่ยวกับวิธีการประมวลผลข้อมูลเลเยอร์ IP
รูปแบบการเขียนโปรแกรมเครือข่ายที่ได้รับความนิยมมากที่สุดในปัจจุบันคือโครงสร้างไคลเอนต์/เซิร์ฟเวอร์ (c/s) นั่นคือหนึ่งในฝ่ายสื่อสารทำหน้าที่เป็นเซิร์ฟเวอร์เพื่อรอให้ลูกค้าส่งคำขอและตอบกลับ ลูกค้าใช้กับเซิร์ฟเวอร์เมื่อต้องการบริการ โดยทั่วไปเซิร์ฟเวอร์มักจะทำงานเป็น daemon โดยฟังพอร์ตเครือข่าย เมื่อลูกค้าร้องขอมันจะเริ่มกระบวนการบริการเพื่อตอบสนองต่อลูกค้าและในขณะเดียวกันก็ยังคงฟังพอร์ตบริการต่อไปเพื่อให้ลูกค้าสามารถรับบริการได้ในเวลาที่เหมาะสม
2. โปรโตคอลการส่งสองประเภท: TCP/UDP
TCP เป็นตัวย่อของโปรโตคอลการควบคุมการถ่ายโอนซึ่งเป็นโปรโตคอลที่มุ่งเน้นการเชื่อมต่อที่ทำให้มั่นใจได้ว่าการส่งที่เชื่อถือได้ การส่งผ่านโปรโตคอล TCP ส่งผลให้เกิดกระแสข้อมูลที่ปราศจากข้อผิดพลาด จะต้องมีการเชื่อมต่อระหว่างซ็อกเก็ตสองคู่ของผู้ส่งและผู้รับเพื่อสื่อสารบนพื้นฐานของโปรโตคอล TCP เมื่อซ็อกเก็ตหนึ่ง (โดยปกติคือซ็อกเก็ตเซิร์ฟเวอร์) กำลังรอการสร้างการเชื่อมต่อซ็อกเก็ตอื่น ๆ อาจต้องมีการเชื่อมต่อ เมื่อเชื่อมต่อซ็อกเก็ตทั้งสองนี้พวกเขาสามารถทำการส่งข้อมูลแบบสองทางและทั้งสองฝ่ายสามารถดำเนินการส่งหรือรับการดำเนินการ
UDP เป็นตัวย่อของโปรโตคอล DataGram ผู้ใช้ มันเป็นโปรโตคอลที่ไม่มีการเชื่อมต่อ แต่ละดาตาแกรมเป็นข้อมูลอิสระรวมถึงที่อยู่ที่สมบูรณ์หรือที่อยู่ปลายทาง มันถูกส่งไปยังปลายทางบนเครือข่ายโดยเส้นทางที่เป็นไปได้ ดังนั้นไม่ว่าจะไปถึงปลายทางเวลาในการไปถึงปลายทางและความถูกต้องของเนื้อหาไม่สามารถรับประกันได้
เปรียบเทียบ:
UDP:
1. แต่ละดาตาแกรมให้ข้อมูลที่อยู่ที่สมบูรณ์ดังนั้นจึงไม่จำเป็นต้องสร้างการเชื่อมต่อระหว่างผู้ส่งและตัวรับสัญญาณ
2. มีขีด จำกัด ขนาดเมื่อ DP ส่งข้อมูลและแต่ละดาตาแกรมที่ส่งจะต้องถูก จำกัด ไว้ที่ 64KB
3. DP เป็นโปรโตคอลที่ไม่น่าเชื่อถือและดาต้าแกรมที่ส่งโดยผู้ส่งไม่จำเป็นต้องมาถึงตัวรับสัญญาณในลำดับเดียวกัน
TCP:
1. ในการเชื่อมต่อกับโปรโตคอลการเชื่อมต่อจะต้องสร้างการเชื่อมต่อก่อนการส่งข้อมูลระหว่างซ็อกเก็ตดังนั้นต้องใช้เวลาในการเชื่อมต่อใน TCP
2. ขีด จำกัด ขนาดข้อมูลการส่งสัญญาณ CP เมื่อมีการสร้างการเชื่อมต่อซ็อกเก็ตของทั้งสองฝ่ายสามารถส่งข้อมูลขนาดใหญ่ในรูปแบบแบบครบวงจร
3.CP เป็นโปรโตคอลที่เชื่อถือได้ซึ่งทำให้มั่นใจได้ว่าตัวรับสัญญาณจะได้รับข้อมูลทั้งหมดที่ส่งโดยผู้ส่งอย่างถูกต้องอย่างถูกต้อง
แอปพลิเคชัน:
1. TCP มีพลังอย่างมากในการสื่อสารเครือข่าย ตัวอย่างเช่นการเชื่อมต่อระยะไกล (telnet) และการถ่ายโอนไฟล์ (FTP) ต้องการข้อมูลความยาวที่แตกต่างกันเพื่อส่งอย่างน่าเชื่อถือ อย่างไรก็ตามการส่งที่เชื่อถือได้มีค่าใช้จ่าย การตรวจสอบความถูกต้องของเนื้อหาข้อมูลจะใช้เวลาในการประมวลผลของคอมพิวเตอร์และแบนด์วิดท์เครือข่ายอย่างหลีกเลี่ยงไม่ได้ ดังนั้นประสิทธิภาพของการส่งสัญญาณ TCP จึงไม่สูงเท่ากับ UDP
2. UDP นั้นใช้งานง่ายและต้องการการควบคุมที่น้อยกว่าดังนั้นจึงมักจะใช้ในแอปพลิเคชันไคลเอนต์/เซิร์ฟเวอร์ในระบบกระจายที่มีความน่าเชื่อถือสูงใน LAN ตัวอย่างเช่นระบบการประชุมทางวิดีโอไม่จำเป็นต้องมีความถูกต้องอย่างแน่นอนของข้อมูลเสียงและวิดีโอตราบใดที่รับประกันความสอดคล้องนั้นมีเหตุผลที่เหมาะสมกว่าที่จะใช้ UDP ในกรณีนี้
3. การเขียนโปรแกรมเครือข่าย Java ที่ใช้ซ็อกเก็ต
1. มันเป็นซ็อกเก็ตหรือไม่
สองโปรแกรมในเครือข่ายตระหนักถึงการแลกเปลี่ยนข้อมูลผ่านการเชื่อมต่อการสื่อสารสองทาง ปลายด้านหนึ่งของลิงค์สองทางนี้เรียกว่าซ็อกเก็ต ซ็อกเก็ตมักจะใช้เพื่อเชื่อมต่อระหว่างลูกค้าและผู้ให้บริการ ซ็อกเก็ตเป็นอินเทอร์เฟซการเขียนโปรแกรมยอดนิยมของโปรโตคอล TCP/IP ซ็อกเก็ตถูกกำหนดโดยที่อยู่ IP และหมายเลขพอร์ต
อย่างไรก็ตามประเภทของโปรโตคอลที่รองรับโดยซ็อกเก็ตไม่เพียง แต่ TCP/IP ดังนั้นจึงไม่มีการเชื่อมต่อที่จำเป็นระหว่างทั้งสอง ในสภาพแวดล้อม Java การเขียนโปรแกรมซ็อกเก็ตส่วนใหญ่หมายถึงการเขียนโปรแกรมเครือข่ายตามโปรโตคอล TCP/IP
2. กระบวนการสื่อสาร ocket
Server Side Listen (ฟัง) ว่ามีคำขอการเชื่อมต่อในพอร์ตหรือไม่ ด้านไคลเอนต์ออกคำขอเชื่อมต่อไปยังฝั่งเซิร์ฟเวอร์และฝั่งเซิร์ฟเวอร์ส่งข้อความตอบกลับกลับไปยังฝั่งไคลเอ็นต์ มีการสร้างการเชื่อมต่อ ทั้งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์สามารถสื่อสารกันผ่านการส่งการเขียนและวิธีอื่น ๆ
สำหรับซ็อกเก็ตที่ใช้งานได้อย่างสมบูรณ์จะต้องมีโครงสร้างพื้นฐานต่อไปนี้และกระบวนการทำงานรวมถึงขั้นตอนพื้นฐานสี่ขั้นตอนต่อไปนี้:
(1) สร้างซ็อกเก็ต
(2) เปิดอินพุต/การไหลออกที่เชื่อมต่อกับซ็อกเก็ต
(3) อ่าน/เขียนซ็อกเก็ตตามโปรโตคอลที่แน่นอน
(4) ปิดซ็อกเก็ต
3. สร้างซ็อกเก็ต
สร้างซ็อกเก็ต
Java จัดเตรียมซ็อกเก็ตสองคลาสและ Serversocket ในแพ็คเกจ java.net ซึ่งใช้เพื่อแสดงไคลเอนต์และเซิร์ฟเวอร์สำหรับการเชื่อมต่อแบบสองทิศทาง เหล่านี้เป็นสองคลาสที่บรรจุดีมากและใช้งานง่ายมาก วิธีการก่อสร้างมีดังนี้:
ซ็อกเก็ต (ที่อยู่ inetaddress, พอร์ต int);
ซ็อกเก็ต (ที่อยู่ inetaddress, พอร์ต int, สตรีมบูลีน);
ซ็อกเก็ต (สตริงโฮสต์, int prot);
ซ็อกเก็ต (โฮสต์สตริง, int prot, สตรีมบูลีน);
ซ็อกเก็ต (Socketimpl Impl)
ซ็อกเก็ต (โฮสต์สตริง, พอร์ต int, inetaddress localAddr, int localport)
ซ็อกเก็ต (ที่อยู่ inetaddress, พอร์ต int, inetaddress localaddr, int localport)
Serversocket (พอร์ต int);
Serversocket (พอร์ต int, backlog int);
Serversocket (int พอร์ต, int backlog, inetaddress bindaddr)
ที่อยู่โฮสต์และพอร์ตคือที่อยู่ IP ชื่อโฮสต์และหมายเลขพอร์ตของบุคคลอื่นในการเชื่อมต่อแบบสองทิศทางตามลำดับ สตรีมระบุว่าซ็อกเก็ตเป็นซ็อกเก็ตสตรีมหรือซ็อกเก็ตดาต้าแกรม LocalPort ระบุหมายเลขพอร์ตของโฮสต์ท้องถิ่น LocalAddr และ Bindaddr เป็นที่อยู่ของเครื่องท้องถิ่น (ที่อยู่โฮสต์ของ Serversocket) Impl เป็นคลาสหลักของซ็อกเก็ต มันสามารถใช้ในการสร้าง Serversocket และสร้างซ็อกเก็ต Count แสดงถึงจำนวนการเชื่อมต่อสูงสุดที่เซิร์ฟเวอร์สามารถรองรับได้ ตัวอย่างเช่น:
ซ็อกเก็ตไคลเอนต์ = ซ็อกเก็ตใหม่ ("127.0.0.1", 8888);
Serversocket Server = ใหม่ Serversocket (8888);
โปรดทราบว่าคุณต้องระวังเมื่อเลือกพอร์ต แต่ละพอร์ตให้บริการเฉพาะ โดยการให้พอร์ตที่ถูกต้องสามารถรับบริการที่เกี่ยวข้องได้ หมายเลขพอร์ตจาก 0 ~ 1023 สงวนไว้โดยระบบ ตัวอย่างเช่นหมายเลขพอร์ตของบริการ HTTP คือ 80 หมายเลขพอร์ตของบริการ Telnet คือ 21 และหมายเลขพอร์ตของบริการ FTP คือ 23 ดังนั้นเมื่อเราเลือกหมายเลขพอร์ตจะเป็นการดีที่สุดที่จะเลือกหมายเลขมากกว่า 1023 เพื่อป้องกันความขัดแย้ง
หากมีข้อผิดพลาดเกิดขึ้นเมื่อสร้างซ็อกเก็ต iOException จะถูกสร้างขึ้นและจะต้องดำเนินการในโปรแกรม ดังนั้นเมื่อสร้างซ็อกเก็ตหรือ Serversocket จำเป็นต้องจับหรือโยนข้อยกเว้น
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น