版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. 基于UDP的多人聊天系统只需把两个客户段代码 与一个服务器代码导入就可以了,记得要把服务器ip:7(也可以自己在服务器程序中改一下),每个客户端需要设置一下ip,比如A客户端:8,B客户端:8,A客户端向B客户端通讯时,“请输入对方ip”,这项改为8,就可以了。客户端源代码程序:ChatFram.javapackage ChatFrame_01;import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import java
2、x.swing.*;import java.lang.*;import java.awt.color.*;import javax.swing.JOptionPane;public class ChatFrame extends JFrame JPanel contentPane;JLabel label1 = new JLabel();/ 发送消息JLabel label2 = new JLabel();/ 输入ipLabel label3 = new Label();/ 输入端口标签Label label4 = new Label();/ 输出端口标签JTextField textFiel
3、d1 = new JTextField();/ 发送消息JTextField textField2 = new JTextField();/ 输入ipJTextField textField3 = new JTextField();/ 获得输入端口JTextField textField4 = new JTextField();/ 获得输出端口JButton button1 = new JButton("发送");/ 发送消息TextArea textArea1 = new TextArea();JOptionPane jopane = new JOptionPane();
4、DatagramPacket sendpacket, receivepacket;/ 声明发送和接收数据包DatagramSocket sendsocket, receivesocket;/ 声明发送和接收DatagramSocketpublic ChatFrame() enableEvents(AWTEvent.WINDOW_EVENT_MASK);try toInit(); catch (Exception e) e.printStackTrace();private void toInit() throws Exception contentPane = (JPanel) this.ge
5、tContentPane();label1.setText("发送信息:");label1.setBounds(new Rectangle(13, 100, 60, 21);contentPane.setLayout(null);contentPane.setBackground(Color.pink);this.setSize(new Dimension(363, 502);this.setTitle("多人聊天室");label2.setText("输入对方IP地址:");label2.setBounds(new Rectangl
6、e(12, 19, 109, 23);label3.setText("输入端口:");label3.setBounds(new Rectangle(12, 58, 55, 22);label4.setText("输出端口:");label4.setBounds(new Rectangle(180, 58, 55, 22);textField3.setText("3000");textField4.setText("3001");button1.setBounds(new Rectangle(280, 100, 59
7、, 21);button1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) button1_actionPerformed(e););textField1.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent e) if (e.getKeyCode() = KeyEvent.VK_ENTER) String str = textField2.getText();String s
8、tr1=textField1.getText();if (pareTo("") != 0&&!"".equals(str1) try textArea1.append("nto " + textField2.getText()+ ":" + "3000" + " say: "+ textField1.getText();String s = textField1.getText();byte data = s.getBytes("UTF-8"
9、;);sendpacket = new DatagramPacket(data,data.length,InetAddress.getByName("7"),6666);sendsocket.send(sendpacket); catch (IOException exc) exc.printStackTrace();textField1.setText(""););textField4.setBounds(new Rectangle(240, 58, 90, 22);textField3.setBounds(new Rectang
10、le(70, 58, 90, 22);textField2.setBounds(new Rectangle(123, 20, 120, 19);textField1.setBounds(new Rectangle(76, 100, 190, 19);textArea1.setBounds(new Rectangle(11, 140, 333, 315);textArea1.setEditable(false);textArea1.setBackground(Color.white);contentPane.add(label4, null);contentPane.add(label3, nu
11、ll);contentPane.add(label2, null);contentPane.add(label1, null);contentPane.add(textField1, null);contentPane.add(textField2, null);contentPane.add(textField3, null);contentPane.add(textField4, null);contentPane.add(textArea1, null);contentPane.add(button1, null);this.setVisible(true);bind();protect
12、ed void processWindowEvent(WindowEvent e) cessWindowEvent(e);if (e.getID() = WindowEvent.WINDOW_CLOSING) System.exit(0);public void waitforpackets() / 检测并接受对方发来的消息while (true) try byte array = new byte100;receivepacket = new DatagramPacket(array, array.length);receivesocket.receive(receivep
13、acket);/ 接收textArea1.append("nfrom " + receivepacket.getAddress() + ":"+ receivepacket.getPort() + " get:");String received = new String(receivepacket.getData(), 0,receivepacket.getLength(), "UTF-8");textArea1.append(received); catch (IOException se) se.printS
14、tackTrace();void bind() / 和对方建立连try sendsocket = new DatagramSocket(3000);receivesocket = new DatagramSocket(3333); catch (Exception e) void button1_actionPerformed(ActionEvent e) / 发送消息到对方String str = textField2.getText();String str1=textField1.getText();if (pareTo("") != 0&&!&quo
15、t;".equals(str1) try textArea1.append("nto " + textField2.getText() + ":" + "3000"+ " say: " + textField1.getText();String s = textField2.getText()+"|"+textField1.getText();byte data = s.getBytes("UTF-8");sendpacket = new DatagramPacke
16、t(data, data.length, InetAddress.getByName("7"), 6666);sendsocket.send(sendpacket); catch (IOException exc) exc.printStackTrace();textField1.setText("");ChatApp.javapackage ChatFrame_01;import java.io.*;import javax.swing.UIManager;import java.awt.*;public class ChatAp
17、p boolean packFrame = false;ChatApp() ChatFrame frame = new ChatFrame();if (packFrame) frame.pack(); else frame.validate();/ 放置窗体在屏幕中央Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.height > screenSize.height) frameSize.height
18、 = screenSize.height;if (frameSize.width > screenSize.width) frameSize.width = screenSize.width;frame.setLocation(screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);frame.setVisible(true);frame.waitforpackets();public static void main(String args) new ChatApp();服务器端:Server.javapackage ChatFrame_01;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .Socket;import java.util.*;public class Server List ips = new ArrayList();DatagramSocket socket;DatagramPacket packet;DatagramSocket ssocket;DatagramPacket spacket;public Server() thro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年漯河市第二实验小学招聘就业见习人员笔试题库含答案详解【完整版】
- 小型水库启闭设备检修处置方案
- 2026浙江绍兴市住房和城乡建设局选调下属事业单位人员2人(二)笔试题库附参考答案详解(B卷)
- 温室大棚灌溉管网施工方案
- 2026四川自贡市自流井区招录公益性岗位人员29人笔试题库及完整答案详解【历年真题】
- 2026四川自贡市自流井区招录公益性岗位人员29人参考题库及参考答案详解【A卷】
- 采矿工程试题及答案
- 小教考编试题及答案
- 机械制造工程学a卷试题及答案
- 污泥无害化处理项目可行性研究报告
- 安徽省合肥一中、安庆一中等六校2026届高一下生物期末复习检测试题含解析
- 部队内部物业管理制度
- 2025年录音师考试《同期录音》技巧
- 2026高压电工证资格考试核心题库(答案及解析)
- 2026年自然资源监测的遥感技术
- (新版)保卫管理员(三级)职业技能等级认定考试题库(答案及解析)
- 塑料管材生产安全制度
- 2025年1月浙江首考高考英语试卷真题完整版(含答案+听力原文)
- 顾客满意度评价方法手册(标准版)
- 镀膜安全操作培训总结课件
- 2026人教版中考英语语法填空题型专练
评论
0/150
提交评论