1. กระเป๋าหัวใจคืออะไร?
แพ็คเก็ต Heartbeat เป็นคำสั่งที่กำหนดด้วยตนเองซึ่งจะแจ้งให้บุคคลอื่นทราบสถานะของตัวเองระหว่างไคลเอนต์และเซิร์ฟเวอร์เป็นประจำและถูกส่งในช่วงเวลาที่กำหนดคล้ายกับการเต้นของหัวใจดังนั้นจึงเรียกว่าแพ็กเก็ตหัวใจ
ใช้เพื่อตรวจสอบว่าอีกฝ่าย (อุปกรณ์กระบวนการหรือองค์ประกอบเครือข่ายอื่น ๆ ) ทำงานตามปกติหรือไม่ ใช้เวลาในการส่งแพ็คเก็ตการสื่อสารอย่างง่าย หากไม่ได้รับการตอบสนองจากอีกฝ่ายภายในระยะเวลาที่กำหนดจะมีการพิจารณาว่าอีกฝ่ายออฟไลน์ ใช้ในการตรวจจับการขาดการเชื่อมต่อที่ผิดปกติของ TCP เหตุผลพื้นฐานคือเซิร์ฟเวอร์ไม่สามารถระบุได้อย่างมีประสิทธิภาพว่าไคลเอนต์ออนไลน์นั่นคือเซิร์ฟเวอร์ไม่สามารถแยกแยะได้ว่าไคลเอนต์ไม่ได้ใช้งานเป็นเวลานานหรือถูกตัดการเชื่อมต่อ แพ็คเก็ต Heartbeat ที่เรียกว่าลูกค้าส่งข้อมูลง่าย ๆ ไปยังเซิร์ฟเวอร์เป็นประจำเพื่อบอกว่าฉันยังอยู่ที่นั่น รหัสคือการส่งข้อความคงที่ไปยังเซิร์ฟเวอร์ทุกสองสามนาที หลังจากได้รับเซิร์ฟเวอร์จะตอบกลับข้อความที่แก้ไขแล้ว หากเซิร์ฟเวอร์ไม่ได้รับข้อมูลไคลเอนต์ภายในไม่กี่นาทีลูกค้าจะถูกตัดการเชื่อมต่อ
ตัวอย่างเช่นซอฟต์แวร์การสื่อสารบางอย่างไม่ได้ใช้เป็นเวลานาน หากคุณต้องการทราบว่าสถานะของมันออนไลน์หรือออฟไลน์คุณต้องใช้แพ็กเก็ตการเต้นของหัวใจและส่งและรับแพ็คเก็ตเป็นประจำ ผู้รับเหมา: อาจเป็นลูกค้าหรือเซิร์ฟเวอร์ ขึ้นอยู่กับว่าด้านใดที่สะดวกและสมเหตุสมผลในการใช้งานและโดยทั่วไปเป็นลูกค้า เซิร์ฟเวอร์ยังสามารถทำให้การเต้นของหัวใจเกิดขึ้นเป็นประจำ โดยทั่วไปด้วยเหตุผลที่มีประสิทธิภาพไคลเอนต์จะส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์อย่างแข็งขันแทนที่จะส่งไปยังไคลเอนต์ ไคลเอนต์ส่งแพ็กเก็ตทุกครั้งโดยใช้ TCP ส่งด้วยการส่งโดยใช้ UDP ส่งด้วย sendto หลังจากเซิร์ฟเวอร์ได้รับมันจะรู้ว่าไคลเอนต์ปัจจุบันยังคงอยู่ในสถานะ "มีชีวิต" มิฉะนั้นหากไม่ได้รับแพ็คเก็ตดังกล่าวหลังจากระยะเวลาหนึ่งเซิร์ฟเวอร์เชื่อว่าไคลเอนต์ถูกตัดการเชื่อมต่อและดำเนินการประมวลผลการเชื่อมต่อของไคลเอนต์ที่เกี่ยวข้อง
2. ต่อไปนี้เป็นตัวอย่างง่ายๆในการใช้แพ็คเกจ Java Heartbeat
a) เซิร์ฟเวอร์เซิร์ฟเวอร์. java
แพ็คเกจ cn.yw.socket.heart; นำเข้า java.io.ObjectInput; นำเข้า java.io.ObjectInputStream; นำเข้า java.net.serversocket; นำเข้า java.net.socket; เซิร์ฟเวอร์ระดับสาธารณะขยายเธรด {เซิร์ฟเวอร์เซิร์ฟเวอร์ส่วนตัว Serversocket (25535); Socket Client = Server.accept (); ซิงโครไนซ์ (obj) {เธรดใหม่ (ไคลเอนต์ใหม่ (ไคลเอนต์)). start ();}}}} catch (Exception e) {e.printstacktrace (); ไคลเอนต์;}@การแทนที่โมฆะสาธารณะเรียกใช้ () {ลอง {ในขณะที่ (จริง) {ObjectInput ใน = New ObjectInputStream (client.getInputStream ()); เอนทิตีเอนทิตี = (เอนทิตี) in.readObject (); system.out.println e) {E.PrintStackTrace ();}}}/***วิธีการหลักของโปรแกรม*@param args*/โมฆะคงที่สาธารณะหลัก (สตริง [] args) {เซิร์ฟเวอร์ใหม่ (). start ();}}}}}b) client.java
แพ็คเกจ cn.yw.socket.heart; ไคลเอนต์คลาสสาธารณะขยายเธรด {@Override โมฆะสาธารณะเรียกใช้ () {ลอง {ในขณะที่ (จริง) {clienter.getInstance (). ส่ง (); ซิงโครไนซ์ (client.class) {// this.wait (5000); thread.sleep (2000); e) {E.PrintStackTrace ();}}/*** รายการโปรแกรมหลัก* @param args*/โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ไคลเอนต์ไคลเอนต์ = ไคลเอนต์ใหม่ (); client.start ();}}} แพ็คเกจ cn.yw.socket.heart; นำเข้า java.io.oBjectOutputStream; นำเข้า java.net.inetaddress; นำเข้า java.net.socket; ลูกค้าระดับสาธารณะ {ลูกค้าส่วนตัว () {} ซ็อกเก็ตผู้ส่ง = null; getInstance () {ถ้า (อินสแตนซ์ == null) {ซิงโครไนซ์ (client.class) {อินสแตนซ์ = new clientender ();}} return อินสแตนซ์;} โมฆะสาธารณะส่ง () {ลอง {ผู้ส่ง = ซ็อกเก็ตใหม่ ในขณะที่ (จริง) {ObjectOutputStream out = new ObjectOutputStream (Sender.GetOutputStream ()); entity obj = นิติบุคคลใหม่ (); obj.setName ("syz"); obj.setsex ("male"); out.writeObject (obj); out.flush ();3. เอนทิตีระดับเอนทิตี Java
แพ็คเกจ cn.yw.socket.heart; นำเข้า java.io.serializable; เอนทิตีระดับสาธารณะใช้ serializable {ชื่อสตริงส่วนตัว; สตริงส่วนตัวเพศ; สตริงสาธารณะ getName () {ชื่อคืน;} โมฆะสาธารณะ setname (ชื่อสตริง) เพศ;}}สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการวิเคราะห์ตัวอย่างการสร้างแพ็คเกจการเต้นของหัวใจ Java Socket ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
รหัสตัวอย่างสำหรับการใช้งานการสื่อสารซ็อกเก็ตในการเขียนโปรแกรม Java MultithReaded
ตัวอย่างรหัสการเขียนโปรแกรม Java โดยใช้ Socket Multithreading เพื่อเข้าถึงไฟล์เซิร์ฟเวอร์
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!