基于UDP协议开发Java聊天系统的方法
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍"基于UDP协议开发Java聊天系统的方法",在日常操作中,相信很多人在基于UDP协议开发Java聊天系统的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2025年02月02日基于UDP协议开发Java聊天系统的方法
这篇文章主要介绍"基于UDP协议开发Java聊天系统的方法",在日常操作中,相信很多人在基于UDP协议开发Java聊天系统的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"基于UDP协议开发Java聊天系统的方法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
代码展示
下面展示一些 Client类。
/**------------------- * 发送端 **---------------------*/class Client extends Thread{ private static String content; //发送内容 private static int port; //发送端口 private static int target; //目标端口 private static byte[] addr; //目标ip地址 /**------------------- *构造函数 **---------------------*/ public Client(String content,int port,int target,byte[] addr){ this.content=content; this.port=port; this.target=target; this.addr=addr; } /**------------------- *发送端函数 **---------------------*/ public void run(){ DatagramSocket client= null; try { //定义发送端端口为 port 的DatagramSocket对象 client = new DatagramSocket(port); } catch (SocketException e) { e.printStackTrace(); } String str=content; DatagramPacket packet= null; try { //定义DatagramPacket对象,用于封装发送的数据以及目标地址 target packet = new DatagramPacket(str.getBytes(),str.getBytes().length, InetAddress.getByAddress(addr),target); } catch (UnknownHostException e) { e.printStackTrace(); } try { //发送数据 client.send(packet); } catch (IOException e) { e.printStackTrace(); } //关闭释放资源 client.close(); }} /**------------------- *接收端 **---------------------*/class Server extends Thread{ private static JTextArea jt; //对话框 private static int target; //目标端口 /*------------------- 构造函数 ---------------------*/ public Server(JTextArea jt,int target){ this.jt=jt; this.target=target; }
下面展示一些 Server类。
/*------------------- 接收端 ---------------------*/class Server extends Thread{ private static JTextArea jt; //对话框 private static int target; //目标端口 /*------------------- 构造函数 ---------------------*/ public Server(JTextArea jt,int target){ this.jt=jt; this.target=target; } /*------------------- 接收端函数 ---------------------*/ public void run(){ String str; DatagramSocket server= null; try { //定义一个端口号为 target 的接收端DatagramSocket对象 server = new DatagramSocket(target); } catch (SocketException e) { e.printStackTrace(); } byte[] buf=new byte[1024]; //定义一个DatagramPacket数据报对象,用于封装接收数据 DatagramPacket packet=new DatagramPacket(buf, buf.length); while (true){ try { //等待接收数据,在数据没有被接收到之前会被堵塞 server.receive(packet); } catch (IOException e) { e.printStackTrace(); } //使用DatagramPacket的方法获得接收到的信息,并转为字符串类型 str=new String(packet.getData(), 0,packet.getLength()); //将接收到的信息打印到对话框 jt.append("接收到:"+str+""); } }}
下面展示一些 Main类。
public class Main { public static int port; public static int target; public static byte[] addr; public static void Login(){ System.out.print("请输入端口号:"); Scanner ScPort=new Scanner(System.in); port=ScPort.nextInt(); System.out.print("请输入目标端口号1:"); Scanner ScTarget=new Scanner(System.in); target=ScTarget.nextInt(); System.out.print("请输入目标端口号2:"); Scanner ScTarget2=new Scanner(System.in); int target2=ScTarget2.nextInt(); System.out.print("请输入目标IP地址:"); Scanner Scaddr=new Scanner(System.in); /*--------------------- 将目标IP存储到数组中 -----------------------*/ String ip=Scaddr.nextLine(); /*--------------------- public String[] split(String regex): 根据给定正则表达式的匹配拆分此字符串 ----------------------*/ String[] ii=ip.split("\."); /*--------------------- 我们现在使用的IPv4是用一个32位的二进制数来存储的,为了方便记忆, 会将其分成4个8位的二进制数(4个一字节的二进制数),每8位之间用圆点隔开。 而每8位二进制数可以转换为一个0~255的十进制数,例如103.42.176.244, 这种写法被称为点数表示法 ----------------------*/ byte[] addr=new byte[4]; for(int i=0;i<4;i++){ addr[i]=(byte)(Integer.parseInt(ii[i])); } System.out.println("窗口启动中...."); new Thread(new Server(CreateAndShowGUI(port,target,addr),target2),"接收服务").start(); } /*------------------- GUI界面 ---------------------*/ public static JTextArea CreateAndShowGUI(int port,int target,byte[] addr){ /*--------------------- 创建界面 ----------------------*/ JFrame jf=new JFrame("聊天界面"); jf.setLocation(400,200); jf.setSize(400,300); /*--------------------- 设置布局 ----------------------*/ jf.setLayout(new BorderLayout()); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*--------------------- 创建聊天窗口 ----------------------*/ JTextArea jt=new JTextArea(14,34); JScrollPane scrollPane=new JScrollPane(jt); jt.setEditable(false); /*--------------------- 创建发送窗口 ----------------------*/ JTextField jte=new JTextField(20); JButton jb=new JButton("发送"); jb.addActionListener(e->{ String content=jte.getText(); /*--------------------- 为发送按钮创建动作 ----------------------*/ if (content!=null&&!content.trim().equals("")){ /*------------------- 判断信息是否为空 若为空,在在对话框提示 你输入的内容为空 反之发送 --------------------*/ jt.append("输入信息为:"+content+""); /*-------------- 将发送框信息发送到目标对话框 传入Client方法的参数分别为 "发送内容,发送端口,目标端口,目标IP地址" ----------------*/ try { new Thread(new Client(content,port,target,addr),"发送服务").start(); } catch (Exception exception) { exception.printStackTrace(); } }else{ jt.append("你输入的内容为空"); } jte.setText(""); //信息发送后,将发送框重置 }); JPanel jp=new JPanel(); JLabel jl=new JLabel("聊天信息"); jp.add(jl); jp.add(jte); jp.add(jb); jf.add(jt,BorderLayout.PAGE_START); jf.add(jp,BorderLayout.PAGE_END); //显示GUI界面 jf.setVisible(true); return jt; } public static void main(String[] args) throws Exception{ Login(); }}
到此,关于"基于UDP协议开发Java聊天系统的方法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
目标
方法
信息
输入
数据
端口
函数
对话框
对话
协议开发
系统
开发
二进制
内容
口号
地址
对象
学习
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
lcraft服务器
护苗网络安全课堂课
大数据分析用于网络安全
什么是云教学管理服务器
计算机网络安全科技馆武汉
数据库的脱机备份db2
江阴浪潮服务器维修处
安全维修保养行业种类数据库
软件开发 增值税普通发票
腾讯微云服务器怎么安装
服务器防火墙安装位置
计算机网络安全规程
软件开发梦想秀蓝图
层层签订网络安全责任
辽宁中国数据库技术大会
计算机网络技术课程教学标准
软件开发广州卓杰
网络安全指数基金
泰国 网络安全部门
梦幻手游天秤座服务器
sql外部数据导入到数据库
数据库的脱机备份db2
区块链有无数据库
服务器407
电源管理芯片 服务器
宜良品牌软件开发价格走势
国家网络安全宣传周三亚
深圳市海跃网络技术公司
怎么装车牌识别数据库
网络技术知识基础