版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于UDP的多人聊天系统只需把两个客户段代码 与一个服务器代码导入就可以了,记得要把服务器(也可以自己在服务器程序中改一下),每个客户端需要设置一下ip,比如A客户端:,B客户端:,A客户端向B客户端通讯时,“请输入对方ip”,这项改为,就可以了。客户端源代码程序:ChatFram.javapackage ChatFrame_01;import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*;import .*;import javax.
2、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 textField1 = new JTextField();/ 发送消息JTextField textField2 = new JTextField
3、();/ 输入ipJTextField textField3 = new JTextField();/ 获得输入端口JTextField textField4 = new JTextField();/ 获得输出端口JButton button1 = new JButton("发送");/ 发送消息TextArea textArea1 = new TextArea();JOptionPane jopane = new JOptionPane();DatagramPacket sendpacket, receivepacket;/ 声明发送和接收数据包DatagramSocke
4、t sendsocket, receivesocket;/ 声明发送和接收DatagramSocketpublic ChatFrame() enableEvents(AWTEvent.WINDOW_EVENT_MASK);try toInit(); catch (Exception e) e.printStackTrace();private void toInit() throws Exception contentPane = (JPanel) this.getContentPane();label1.setText("发送信息:");label1.setBounds(
5、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 Rectangle(12, 19, 109, 23);label3.setText("输入端口:");label3.setBou
6、nds(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, 21);button1.addActionListener(new java.awt.event.ActionListener(
7、) 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 str1=textField1.getText();if (pareTo("") != 0&&!&
8、quot;".equals(str1) try textArea1.append("nto " + textField2.getText()+ ":" + "3000" + " say: "+ textField1.getText();String s = textField1.getText();byte data = s.getBytes("UTF-8");sendpacket = new DatagramPacket(data,data.length,InetAddress.ge
9、tByName("7"),6666);sendsocket.send(sendpacket); catch (IOException exc) exc.printStackTrace();textField1.setText(""););textField4.setBounds(new Rectangle(240, 58, 90, 22);textField3.setBounds(new Rectangle(70, 58, 90, 22);textField2.setBounds(new Rectangle(123, 20, 120
10、, 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, null);contentPane.add(label2, null);contentPane.add(label1, null);co
11、ntentPane.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();protected void processWindowEvent(WindowEvent e) cessWindowEvent
12、(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(receivepacket);/ 接收textArea1.append("nfrom " + receivepacket.get
13、Address() + ":"+ receivepacket.getPort() + " get:");String received = new String(receivepacket.getData(), 0,receivepacket.getLength(), "UTF-8");textArea1.append(received); catch (IOException se) se.printStackTrace();void bind() / 和对方建立连try sendsocket = new DatagramSocke
14、t(3000);receivesocket = new DatagramSocket(3333); catch (Exception e) void button1_actionPerformed(ActionEvent e) / 发送消息到对方String str = textField2.getText();String str1=textField1.getText();if (pareTo("") != 0&&!"".equals(str1) try textArea1.append("nto " + text
15、Field2.getText() + ":" + "3000"+ " say: " + textField1.getText();String s = textField2.getText()+"|"+textField1.getText();byte data = s.getBytes("UTF-8");sendpacket = new DatagramPacket(data, data.length, InetAddress.getByName("7"
16、;), 6666);sendsocket.send(sendpacket); catch (IOException exc) exc.printStackTrace();textField1.setText("");ChatApp.javapackage ChatFrame_01;import java.io.*;import ;import java.awt.*;public class ChatApp boolean packFrame = false;ChatApp() ChatFrame frame = new ChatFrame();if (packFrame)
17、frame.pack(); else frame.validate();/ 放置窗体在屏幕中央Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.height > screenSize.height) frameSize.height = screenSize.height;if (frameSize.width > screenSize.width) frameSize.width = scree
18、nSize.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() throws Except
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制浆废液回收利用工安全意识强化能力考核试卷含答案
- 讲解员安全技能测试模拟考核试卷含答案
- 电气电子产品环保检测员岗前管理应用考核试卷含答案
- 四年级上册数学好玩第4课时《数图形的学问》教学设计
- 《色彩的渐变》教案-2025-2026学年苏少版(新教材)小学美术三年级下册
- 2025年培训班教案设计模板
- 康复护理评估工具
- 中暑中医护理的应急预案与处置
- 2026年大学大四(汽车检测与维修技术)汽车维修综合测试试题及答案
- 2026年防护服穿脱流程试题及答案
- (2025年)山东省临沂市事业单位面试真题及参考答案
- 2026年湖南水利水电职业技术学院单招职业倾向性测试必刷测试卷附答案
- 湖南高速铁路职业技术学院2024单招试卷
- 辽宁省大连市名校2026届八年级物理第一学期期末监测试题含解析
- 2025年智慧商业行业分析报告及未来发展趋势预测
- 《机械基础(第七版)》课件(中)
- 2025年健康服务与管理专升本健康管理试卷(含答案)
- 2025年党政领导干部选拔任用考试模拟试卷及答案(共两套)
- 企业年度预算制定与执行分析模板
- 2025年云南职教高考真题及答案
- 汽车维修基础知识培训总结
评论
0/150
提交评论