บทความนี้แบ่งปันเครื่องมือแชทง่าย ๆ สำหรับคุณฉันหวังว่าคุณจะชอบ
รหัสทำงานตามที่แสดงในรูปและดูดีทีเดียว
ด้านเซิร์ฟเวอร์
แพ็คเกจ qiu; นำเข้า java.awt.borderlayout; นำเข้า java.awt.event.actionevent; นำเข้า java.awt.event.actionListener; นำเข้า java.awt.print.printable; นำเข้า java.io.bufferedreader; java.net.serversocket; นำเข้า java.net.socket; นำเข้า java.util.calendar; นำเข้า javax.swing.jbutton; นำเข้า Javax.swing.jframe นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jscrollpane; javax.swing.jtextfield;/*** เซิร์ฟเวอร์สำหรับซอฟต์แวร์แชทง่าย ๆ**/คลาสสาธารณะ MyServer ขยาย JFrame ใช้ ActionListener {JTextArea JTextArea = null; // พื้นที่บรรทัดเดียวที่ใช้เพื่อแสดงข้อความธรรมดา jtextfield JTextfield = null; JPanel JPanel = NULL; JScrollpane JScrollpane = null; // ส่งข้อมูลไปยัง PrintWriter Object Object PrintWriter = null;/*** ฟังก์ชั่นหลักบนเซิร์ฟเวอร์**/โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// วิธีการที่สร้างขึ้นโดยอัตโนมัติ jtextarea (); jtextfield = ใหม่ jtextfield (20); SendButton = new JButton ("ส่ง"); sendbutton.addactionListener (นี้); SendButton.SetActionCommand ("ส่ง"); jscrollpane = new jscrollpane (jtextarea); jpanel = new JPanel (); jpanel.add (jtextfield); // เพิ่มกล่องแก้ไข jpanel.add (sendbutton); // เพิ่มปุ่ม // เพิ่มเค้าโครงของสองแผง this.add (jscrollpane, borderlayout.center); this.add (jpanel, borderlayout.south); this.setsize (400,300); this.settitle ("เซิร์ฟเวอร์แชท"); this.setDefaultCloseOperation (jframe.exit_on_close); // ตั้งค่าปุ่มออก this.setVisible (จริง); this.setresizable (จริง); // ต่อไปนี้คือการสร้างซ็อกเก็ตเซิร์ฟเวอร์ลอง {// เซิร์ฟเวอร์ฟัง Serversocket SS = ใหม่ Serversocket (9988); // รอให้ลูกค้าเชื่อมต่อซ็อกเก็ตซ็อกเก็ต = Ss.Ccept (); // รับสตรีมของข้อมูลที่ส่งโดย client bufferedreader br = new bufferedReader (ใหม่ inputStreamReader (socket.getInputStream ())); printWriter = ใหม่ printWriter (socket.getOutputStream (), true); // อ่านข้อมูลที่ส่งจากไคลเอนต์ในขณะที่ (จริง) {string info = br.readline (); jtextarea.append ("ไคลเอนต์"+getTime ()+"/r/n"+ข้อมูล+"/r/n"); }} catch (ioexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); }}/*** ใช้เพื่อรับเวลาปัจจุบัน* @return เวลาปัจจุบัน*/สตริงสาธารณะ getTime () {// ปฏิทิน c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // รับชั่วโมง int นาที = c.get (calendar.minute); int second = c.get (calendar.second); ส่งคืนชั่วโมง+":"+นาที+":"+วินาที; }/*** เรียกว่าเมื่อปุ่มถูกคลิก*/@overridepublic เป็นโมฆะ actionPerformed (ActionEvent E) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub // โทรถ้า (e.getActionCommand (). เท่ากับ ("ส่ง") {// ส่งเนื้อหาที่เขียนโดยเซิร์ฟเวอร์ jtextarea.append ("เซิร์ฟเวอร์"+getTime ()+"/r/n"+ข้อมูล+"/r/n"); printwriter.println (ข้อมูล); // ส่งเนื้อหากล่องอย่างชัดเจน jtextfield.settext (""); -ลูกค้า
แพ็คเกจ qiu; นำเข้า java.awt.borderlayout; นำเข้า java.awt.event.actionevent; นำเข้า java.awt.event.actionListener; นำเข้า java.io.bufferedreader; นำเข้า java.io.ioexception; java.net.unknownhostexception; นำเข้า java.util.calendar; นำเข้า Javax.swing.jbutton; นำเข้า Javax.swing.jframe; นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jscrollpane; */คลาสสาธารณะ MyClient ขยาย JFrame ใช้ ActionListener {JTextArea JtextArea = null; jtextfield jtextfield = null; JPanel JPanel = NULL; JScrollpane JScrollpane = null; JButton SendButton = NULL; PrintWriter printWriter = null;/*** ฟังก์ชั่นหลักของไคลเอนต์**/โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub myclient ใหม่ ();}/*** ตัวสร้างไคลเอนต์ใช้เพื่อเริ่มต้น** jtextfield = ใหม่ jtextfield (20); SendButton = new JButton ("ส่ง"); sendbutton.addactionListener (นี้); SendButton.SetActionCommand ("ส่ง"); jscrollpane = new jscrollpane (jtextarea); jpanel = new JPanel (); jpanel.add (jtextfield); jpanel.add (SendButton); this.add (jscrollpane, borderlayout.center); this.add (jpanel, borderlayout.south); this.setsize (400, 300); this.settitle ("แชทไคลเอนต์"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setVisible (จริง); this.setresizable (จริง); // รหัสการสื่อสารซ็อกเก็ตลอง {ซ็อกเก็ต s = ซ็อกเก็ตใหม่ ("127.0.0.1", 9988); bufferedReader br = ใหม่ bufferedReader (ใหม่ inputStreamReader (s.getInputStream ())); PrintWriter = ใหม่ PrintWriter (s.getOutputStream (), จริง); ในขณะที่ (จริง) {// อ่านข้อมูลที่ส่งโดยสตริงเซิร์ฟเวอร์อย่างต่อเนื่อง = br.readline (); jtextarea.append ("เซิร์ฟเวอร์"+getTime ()+"/r/n"+สตริง+"/r/n"); }} catch (unknownhostexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); }}/*** ใช้เพื่อให้ได้เวลาปัจจุบัน* @return เวลาปัจจุบัน*/สตริงสาธารณะ getTime () {// แต่ละโดเมนเวลาแต่ละรายการสามารถแก้ไขปฏิทิน c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // รับชั่วโมง int นาที = c.get (calendar.minute); int second = c.get (calendar.second); ส่งคืนชั่วโมง+":"+นาที+":"+วินาที; }/*** เรียกว่าเมื่อปุ่มถูกคลิก*/@overridepublic เป็นโมฆะ ActionPerformed (ActionEvent E) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub ถ้า (sendButton.getActionCommand (). เท่ากับ ("ส่ง")) // ส่งข้อมูลที่ส่งโดยไคลเอนต์ไปยังเซิร์ฟเวอร์ jtextarea.append ("ไคลเอนต์"+getTime ()+"/r/n"+info+"/r/n"); printwriter.println (ข้อมูล); jtextfield.settext (""); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น