การแนะนำชั้น Java ที่เกี่ยวข้อง
DataGramsocket
public class DatagramSocket extends Object
คลาสนี้แสดงถึงซ็อกเก็ตที่ใช้ในการส่งและรับแพ็คเก็ตดาตาแกรม
ซ็อกเก็ต DataGram เป็นจุดส่งหรือรับของบริการจัดส่งแพ็คเก็ต แต่ละแพ็คเก็ตที่ส่งหรือรับบนซ็อกเก็ต DataGram จะได้รับการแก้ไขและกำหนดเส้นทางแยกกัน หลายแพ็คเก็ตที่ส่งจากเครื่องหนึ่งไปยังอีกเครื่องอาจเลือกเส้นทางที่แตกต่างกันหรืออาจมาถึงคำสั่งซื้อที่แตกต่างกัน
การส่งออกอากาศ UDP เปิดใช้งานอยู่เสมอบน DataGramSocket เพื่อที่จะได้รับแพ็กเก็ตออกอากาศ DataGramsocket ควรถูกผูกไว้กับที่อยู่ Wildcard ในการใช้งานบางอย่างสามารถรับแพ็คเก็ตออกอากาศได้เมื่อผูกกับที่อยู่ที่เฉพาะเจาะจงมากขึ้น
ข้อมูลสามารถส่งและรับผ่านการส่งและรับ DataGramsocket
public void receive(DatagramPacket p) throws IOException
รับแพ็คเก็ตดาตาแกรมจากซ็อกเก็ตนี้ เมื่อวิธีการนี้กลับมาบัฟเฟอร์ของ DataGampacket จะเต็มไปด้วยข้อมูลที่ได้รับ แพ็คเก็ต DataGram ยังมีที่อยู่ IP ของผู้ส่งและหมายเลขพอร์ตบนเครื่องของผู้ส่ง
วิธีนี้บล็อกจนกว่าจะได้รับดาตาแกรม ฟิลด์ความยาวของวัตถุแพ็คเก็ต DataGram มีความยาวของข้อมูลที่ได้รับ หากข้อมูลยาวกว่าความยาวของแพ็กเก็ตข้อมูลจะสั้นลง
หากผู้จัดการความปลอดภัยมีอยู่และวิธีการตรวจสอบของผู้จัดการความปลอดภัยไม่อนุญาตให้ดำเนินการรับแพ็คเก็ตไม่สามารถรับได้
พารามิเตอร์:
P-The DataGampacket เพื่อวางข้อมูลที่เข้ามา
โยน:
IOException - หากเกิดข้อผิดพลาด I/O
SocketTimeOutException - หาก SetSotimeout ถูกเรียกว่าก่อนหน้านี้และค่าการหมดเวลาหมดอายุแล้ว
PortunReachableException - อาจโยนเมื่อซ็อกเก็ตเชื่อมต่อกับเป้าหมายที่ไม่สามารถเข้าถึงได้ในปัจจุบัน โปรดทราบว่าไม่มีการรับประกันว่าข้อยกเว้นจะถูกโยนทิ้ง
การผิดกฎหมาย ModeException - หากซ็อกเก็ตนี้มีช่องทางที่เกี่ยวข้องและช่องทางอยู่ในโหมดไม่ปิดกั้น
public void send(DatagramPacket p) throws IOException
ส่งแพ็คเก็ต DataGram จากซ็อกเก็ตนี้ DataGrampacket มีข้อมูลที่ระบุ: ข้อมูลที่จะส่งความยาวที่อยู่ IP ของโฮสต์ระยะไกลและหมายเลขพอร์ตของโฮสต์ระยะไกล
หากผู้จัดการรักษาความปลอดภัยมีอยู่และซ็อกเก็ตไม่ได้เชื่อมต่อกับที่อยู่ระยะไกลในปัจจุบันวิธีนี้จะทำการตรวจสอบความปลอดภัยก่อน ก่อนอื่นถ้า p.getaddress (). ismulticastaddress () เป็นจริงวิธีนี้เรียกวิธีการตรวจสอบความปลอดภัยของผู้จัดการความปลอดภัยด้วย p.getaddress () เป็นพารามิเตอร์ หากค่าของนิพจน์เป็นเท็จวิธีนี้ใช้เพื่อเรียกวิธีการตรวจสอบของผู้จัดการความปลอดภัยด้วย p.getAddress (). getHostaddress () และ p.getport () เป็นพารามิเตอร์ หากไม่อนุญาตให้ดำเนินการการโทรแต่ละครั้งไปยังวิธีการจัดการความปลอดภัยจะส่งผลให้ SecurityException
พารามิเตอร์:
P-Datagrampacket ที่จะส่ง
โยน:
IOException - หากเกิดข้อผิดพลาด I/O
SecurityException - หากผู้จัดการรักษาความปลอดภัยมีอยู่และวิธีการตรวจสอบหรือวิธีการตรวจสอบ CheckConnect ไม่อนุญาตให้ส่ง
PortunReachableException - อาจโยนเมื่อซ็อกเก็ตเชื่อมต่อกับเป้าหมายที่ไม่สามารถเข้าถึงได้ในปัจจุบัน โปรดทราบว่าไม่มีการรับประกันว่าข้อยกเว้นจะถูกโยนทิ้ง
การผิดกฎหมาย ModeException - หากซ็อกเก็ตนี้มีช่องทางที่เกี่ยวข้องและช่องทางอยู่ในโหมดไม่ปิดกั้น
DataGampacket
public final class DatagramPacket extends Object
ประเภทนี้แสดงถึงแพ็คเก็ต DataGram UDP ซึ่งใช้ในการใช้บริการจัดส่งแพ็กเก็ตแบบไม่มีการเชื่อมต่อ
วิธีการก่อสร้าง:
DatagramPacket(byte[]buf,intlength)
สร้าง DataGampacket เพื่อรับแพ็คเก็ตข้อมูลที่มีความยาว
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
สร้างแพ็คเก็ต DataGram เพื่อส่งแพ็กเก็ตที่มีความยาวไปยังหมายเลขพอร์ตที่ระบุบนโฮสต์ที่ระบุ
ตัวอย่างระบบแชทกลุ่ม UDP
UDP เชื่อมต่อโดยไม่มีการเชื่อมต่อ การแชทเป็นกลุ่มคือการส่งข้อมูลไปยังที่อยู่แพร่กระจาย (ที่อยู่กระจายเสียง) เพื่อให้ทุกคนได้รับข้อความ การใช้เมธอดเธรดเริ่มเธรดผู้ส่งและเธรดตัวรับสัญญาณผู้ส่งจะอ่านอินพุตแป้นพิมพ์เป็นเอาต์พุตตัวรับสัญญาณจะอ่านข้อมูลอินพุตและแสดง
ผู้ส่ง
udpsender.java
แพ็คเกจ cn.xidian.socket; นำเข้า java.io.bufferedreader; นำเข้า java.io.ioexception; นำเข้า java.io.inputstreamreader; นำเข้า java.net.datagrampacket; นำเข้า java.net.datagramsocket; {ลอง {// สร้าง UDP Service DataGramsocket Socket = ใหม่ DataGramSocket (); // เตรียมแพ็คเก็ตข้อมูลเพื่อส่ง // อ่านอินพุตจากระบบอินพุตของระบบ bufferedReader ใน = new BufferedReader การแชทเป็นกลุ่มต้องเขียนที่อยู่ออกอากาศตัวอย่างเช่น: 192.168.137.255Datagrampacket Data = DataGampacket ใหม่ (line.getBytes (), line.getBytes (). ความยาว, inetaddress.getByName ("127.0.0.1"), 9090); SocketSocket.close ();} catch (ioexception e) {e.printstacktrace ();}}}}เครื่องรับสัญญาณ
udpreceiver.java
แพ็คเกจ cn.xidian.socket; นำเข้า java.io.ioexception; นำเข้า java.net.datagrampacket; นำเข้า java.net.datagramsocket; ชั้นเรียนสาธารณะ udpreceiver ขยายเธรด {@Override Void Run () {ลอง {// สร้างบริการ UDP DataGramsocket (9090); // ยอมรับแพ็คเก็ตข้อมูล byte [] temp = byte ใหม่ [1024]; dataGrampacket data = dataGampacket ใหม่ (temp, temp.length); ธงบูลีน = true; data.getAddress (). getHostaddress (); String senderHostName = data.getAddress (). getHostName (); system.out.println (senderhostname+"("+senderaddress+")"+"พูดว่า:" (ioException E) {E.PrintStackTrace ();}}}วิธีหลัก
udpmain.java
แพ็คเกจ cn.xidian.socket; คลาสสาธารณะ udpmain {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// เริ่มเธรด udpreceiver udpreceiver ตัวรับสัญญาณ = ใหม่ udpreceiver (); receiver.start ();ผลการทดสอบ
ปาร์ตี้อินพุตอ่านอินพุตแป้นพิมพ์เป็นเอาต์พุตผู้รับจะได้รับข้อความและแสดง IP และชื่อโฮสต์ของผู้ส่ง
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการเขียนโปรแกรม Java โดยใช้ UDP เพื่อสร้างตัวอย่างรหัสระบบแชทกลุ่ม ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!