ฉันเพิ่งเริ่มโครงการที่จำเป็นต้องมีการสื่อสารบนเว็บออนไลน์ ฉันไม่ได้เขียนโค้ดมานานและฉันก็ไม่คุ้นเคยกับมัน ดังนั้นฉันจึงเขียนตัวอย่างและฝึกฝนและแบ่งปันบนแพลตฟอร์ม Wulin Network เพื่อสร้างบันทึกเพื่อให้สามารถใช้กับทุกคนได้
ก่อนอื่นให้ฉันบอกขั้นตอนการใช้งาน:
1. ใช้ส่วนประกอบ AWT และซ็อกเก็ตเพื่อใช้ไคลเอนต์เดี่ยวอย่างง่ายเพื่อส่งข้อความไปยังเซิร์ฟเวอร์อย่างต่อเนื่อง
2. รวมกับเธรดตระหนักถึงการเชื่อมต่อหลายไคลเอนต์ไปยังเซิร์ฟเวอร์เพื่อส่งข้อความ
3. ใช้ข้อความไคลเอนต์การส่งต่อเซิร์ฟเวอร์ไปยังไคลเอนต์ทั้งหมดและแสดงบนไคลเอนต์ในเวลาเดียวกัน
4. เปลี่ยนอินเตอร์เฟสหน้าต่างที่สร้างขึ้นโดยส่วนประกอบ AWT เป็นอินเทอร์เฟซที่แสดงโดย JSP หรือ HTML front-end และเปลี่ยนไคลเอนต์ที่ใช้โดย Java Socket ไปสู่การใช้งานเทคโนโลยีส่วนหน้า
ที่นี่เราใช้ฟังก์ชั่นง่าย ๆ ของขั้นตอนแรกความยากคือ:
1. ฉันไม่เคยใช้องค์ประกอบ AWT และฉันไม่เคยใช้กิจกรรมการฟังที่เกี่ยวข้องกับ Java
2. ฉันไม่ได้ใช้ซ็อกเก็ตเป็นเวลานานในการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์และฉันยังไม่ได้พัฒนาโครงสร้าง CSS
รหัสเพื่อใช้งานฟังก์ชั่นมีดังนี้:
ลูกค้า:
แพ็คเกจแชทแชท; นำเข้า Java.awt.BorderLayout; นำเข้า java.awt.frame; นำเข้า Java.awt.TextArea; นำเข้า Java.awt.TextField; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener; นำเข้า java.awt.event.windowadapter; นำเข้า java.awt.event.windowevent; นำเข้า Java.io.DataOutputStream; นำเข้า java.io.ioException; นำเข้า java.net.socket; นำเข้า java.net.unknownhostexception; / ** * ไคลเอ็นต์แชทออนไลน์ 1. สร้างอินเทอร์เฟซหน้าต่างกราฟิกโครงร่าง 2. เพิ่มเหตุการณ์ปิดลงในโครงร่าง 3. เพิ่มพื้นที่อินพุตและพื้นที่แสดงเนื้อหาลงในโครงร่าง 4. เพิ่มเหตุการณ์การส่งคืนรถสำหรับพื้นที่อินพุต * 5. สร้างการเชื่อมต่อเซิร์ฟเวอร์และส่งข้อมูล * * @author Tuzongxun123 * * // การแสดงเนื้อหาพื้นที่ textarea ส่วนตัว taste = new textarea (); ซ็อกเก็ตซ็อกเก็ตส่วนตัว = null; // การส่งออกข้อมูล Data DataOutputStream DataOutputStream = NULL; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {chatclient ใหม่ (). launcframe (); } / ** * สร้างหน้าต่างกราฟิกง่าย ๆ * * @author: tuzongxun * @title: launcframe * @param * @return เป็นโมฆะ * @date 18 พฤษภาคม 2016 9:57:00 am * @throws * / โมฆะสาธารณะ launcframe () {setLocation (300, 200); this.setsize (200, 400); เพิ่ม (tftxt, borderlayout.south); เพิ่ม (Tarea, Borderlayout.north); หีบห่อ(); // ฟังเหตุการณ์การปิดของหน้าต่างอินเตอร์เฟสกราฟิก this.addWindowListener (ใหม่ windowAdapter () {@Override โมฆะสาธารณะ windowclosing (windowEvent e) {system.exit (0); disconnect ();}}); tftxt.addactionListener (ใหม่ tflister ()); setVisible (จริง); เชื่อมต่อ(); } / ** * เชื่อมต่อกับเซิร์ฟเวอร์ * * @author: tuzongxun * @title: เชื่อมต่อ * @param * @return เป็นโมฆะ * @date 18 พฤษภาคม 2016 9:56:49 am * @throws * / โมฆะสาธารณะเชื่อมต่อ () {ลอง {// // รับสตรีมเอาต์พุตไคลเอ็นต์ DataOutputStream = ใหม่ dataOrmputStream (socket.get.getOutputStream ()); System.out.println ("เชื่อมต่อกับเซิร์ฟเวอร์"); } catch (unknownhostexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); }} / ** * ปิดแหล่งข้อมูลลูกค้า * * @author: tuzongxun * @title: disconnect * @param * @return เป็นโมฆะ * @date 18 พฤษภาคม 2016 9:57:46 am * @throws * / โมฆะสาธารณะ disconnect () {ลอง {dataOutputStream.close (); Socket.close (); } catch (ioexception e) {e.printstacktrace (); }} / ** * ส่งข้อความไปยังเซิร์ฟเวอร์ * * @author: tuzongxun * @title: sendmessage * @param @param text * @return เป็นโมฆะ * @date 18 พฤษภาคม 2016 9:57:56 am * @throws * / โมฆะส่วนตัว dataOrtputStream.flush (); } catch (ioexception e1) {e1.printstacktrace (); }} / ** * พื้นที่อินพุตหน้าต่างกราฟิกเพื่อฟังเหตุการณ์การส่งคืนรถ * * @author tuzongxun123 * * / คลาสส่วนตัว tflister ใช้ actionListener {@Override โมฆะสาธารณะ actionperformed taxa.settext (ข้อความ); tftxt.settext (""); // ส่งข้อมูลไปยังเซิร์ฟเวอร์ sendMessage (ข้อความ); -เซิร์ฟเวอร์:
แพ็คเกจแชทแชท; นำเข้า java.io.datainputstream; นำเข้า java.io.eofexception; นำเข้า java.io.ioException; นำเข้า java.net.bindexception; นำเข้า java.net.serversocket; นำเข้า java.net.socket; /*** Java ใช้ซ็อกเก็ตและส่วนประกอบ AWT เพื่อใช้ฟังก์ชั่นการแชทออนไลน์ เซิร์ฟเวอร์สามารถรับรู้เซิร์ฟเวอร์เพื่อส่งข้อความไปยังเซิร์ฟเวอร์อย่างต่อเนื่องหลังจากเชื่อมต่อไคลเอนต์หนึ่ง* แต่ไม่สนับสนุนไคลเอนต์หลายตัวเพื่อเชื่อมต่อในเวลาเดียวกัน เหตุผลก็คือหลังจากได้รับการเชื่อมต่อไคลเอนต์ในรหัสแล้วมันจะฟังอินพุตไคลเอนต์ที่วนลูปทำให้เกิดการอุดตัน* เพื่อให้เซิร์ฟเวอร์ไม่สามารถฟังไคลเอนต์อื่นได้สองครั้ง หากคุณต้องการใช้งานคุณต้องใช้แบบอะซิงโครนัสหรือมัลติเธรด * * @author tuzongxun123 * */ แชทคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ว่าเซิร์ฟเวอร์เริ่มสำเร็จ // ซ็อกเก็ตเซิร์ฟเวอร์เซิร์ฟเวอร์ SS = NULL; // ซ็อกเก็ตซ็อกเก็ตซ็อกเก็ตซ็อกเก็ต = null; // เซิร์ฟเวอร์อ่านข้อมูลลูกค้าอินพุตข้อมูลไคลเอนต์ datainputStream datainputStream = null; ลอง {// เริ่มเซิร์ฟเวอร์ SS = ใหม่ Serversocket (8888); } catch (bindexception e) {system.out.println ("พอร์ตมีการใช้งานแล้ว"); // ปิดโปรแกรมโปรแกรมออก (0); } catch (exception e) {e.printstacktrace (); } ลอง {iSstart = true; ในขณะที่ (iSstart) {boolean isConnect = false; // เริ่มซ็อกเก็ตการฟัง = ss.accept (); System.out.println ("One Client Connect"); isConnect = true; ในขณะที่ (isConnect) {// รับไคลเอนต์อินพุตสตรีม datainputStream = ใหม่ datainputStream (socket.getInputStream ()); // อ่านข้อมูลที่ส่งผ่านโดยข้อความสตริงไคลเอนต์ = datainputStream.readutf (); System.out.println ("ไคลเอนต์พูดว่า:" + ข้อความ); }}} catch (eofexception e) {system.out.println ("ลูกค้าปิด!"); } catch (exception e) {e.printstacktrace (); } ในที่สุด {// ปิดทรัพยากรที่เกี่ยวข้องลอง {datainputStream.close (); Socket.close (); } catch (ioexception e) {e.printstacktrace (); -ข้างต้นเป็นความรู้ที่เกี่ยวข้องเกี่ยวกับซ็อกเก็ต Java ที่ใช้ฟังก์ชั่นการแชทออนไลน์อย่างง่าย (i) แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!