基于UDP协议的局域网网络聊天工具
/* * 本程序实现了基于UDP协议的局域网网络聊天工具。 * 参考网上的源码,发现一个calss就可以搞定。 * ChatFrame类创建窗口,包含JTextField和TextArea。 * 前者负责获取并发送消息,后者负责显示消息。 * 在ChatFrame的构造函数中加入UDP接收函数,作为一个单独的线程 * UDP的发送函数放在监听器的处理方法中。源事件可以是按钮的点击,或JTextField点回车 * * 程序本身没有多大难度,但由于之前的思路错了,导致撸了两天才撸出来。 * 写代码之前要对程序功能抽象,层层分离,我正在培养这种思维。 */import java.net.*;import java.util.Date;import java.io.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Chat {/* * 测试 * 一台机器只能运行一个窗口,不然会应为端口已占用报错 */public static void main(String[] args) throws Exception {new ChatFrame();}}class ChatFrame extends JFrame implements ActionListener{public TextArea t;public JTextField f;public DatagramSocket ds;public ChatFrame(){t = new TextArea();t.setEditable(false);add(t,BorderLayout.NORTH);f = new JTextField();add(f,BorderLayout.CENTER);f.setFocusable(true);f.addActionListener(this);JButton send = new JButton("Send");send.addActionListener(this);server();add(send,BorderLayout.SOUTH);setSize(250,270);setVisible(true);setLocationRelativeTo(null);}public void printText(String s) {t.append(new Date()+"\n"+s+"\n");}public void server() {/* * 负责 */try {ds = new DatagramSocket(10003);byte[] buf = new byte[1024];final DatagramPacket p = new DatagramPacket(buf,buf.length);Runnable runnable=new Runnable() {@Overridepublic void run() {// TODO 自动生成的方法存根while(true) {try {ds.receive(p);String data = new String(p.getData(),0,p.getLength());printText(data);}catch(Exception e) {}}}};new Thread(runnable).start();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}public void actionPerformed(ActionEvent arg0) {// TODO 自动生成的方法存根try {byte[] buf = f.getText().getBytes();DatagramPacket p = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10003);try {ds.send(p);}catch(Exception e) {}} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}t.selectAll();t.setCaretPosition(f.getDocument().getLength());//清空TextField内已编辑的文本f.setText("");}}
基于UDP协议的局域网网络聊天工具相关推荐
- java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序
最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...
- java udp 聊天室_Java基于UDP协议实现简单的聊天室程序
最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. ...
- 小成开发日记---利用Qt/C++实现基于Udp协议的网络聊天室(分服务端和客户端的开发【轻聊v1.0.1】)
作者:小成Charles 原创作品 转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/112363393 一.引言 最 ...
- Java网络编程——基于UDP协议的聊天室
UDP简述 UDP(User Datagram Protocol)协议是Internet 协议集支持的一个无连接的传输协议,中文名为用户数据报协议.它为应用程序提供了一种无需建立连接就可以发送封 ...
- 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具。QQ_Chat
代码下载地址 原博客地址 QQ_Chat 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具. (内含报告) 工具: Eclipse.Navicat for MySQL ...
- 基于WebServices简易网络聊天工具的设计与实现
基于WebServices简易网络聊天工具的设计与实现 Copyright 朱向洋 Sunsea ALL Right Reserved 一.项目内容 本次课程实现一个类似QQ的网络聊天软件的功能:服务 ...
- 搬砖:新一代基于UDP的低延时网络传输层协议——QUIC详解
技术扫盲:新一代基于UDP的低延时网络传输层协议--QUIC详解 本文来自腾讯资深研发工程师罗成的技术分享,主要介绍 QUIC 协议产生的背景和核心特性等. 1.写在前面 如果你的 App,在不需要任 ...
- 网络编程应用:基于UDP协议【实现文件下载】--练习
要求: 基于UDP协议实现文件下载 发送方–请求–接收方发送文件–发送方接收文件 代码: 发送方: package Homework1;import java.io.File; import java ...
- python语言视频-Python语言之Python3 实现简易局域网视频聊天工具
本文主要向大家介绍了Python语言之Python3 实现简易局域网视频聊天工具,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 操作系统为 Ubuntu 16.04,OpenCV ...
最新文章
- SpreadJS 类Excel表格控件 - V12 新特性详解
- JSP实现大学生综合素质测评系统
- c语言迭代法求平方根_求平方根问题 (C++ 实现)
- 原始jdbc操作的分析
- linux命令 查找包含指定字符串的文件
- UncategorizedSQLException异常处理办法
- CodeForces - 1612A Distance
- 【车间调度】基于matlab遗传算法求解柔性车间调度问题【含Matlab源码 660期】
- PNG转ICO在线转换
- pip 和 conda 什么区别?
- 纽约市立大学布鲁克林学院计算机系,纽约市立大学布鲁克林学院教授张嘉如 带你体验《舌尖上的道德》...
- Greenplum Python专用库gppylib学习——base.py
- 上班时间写开源软件,结果被单位告被警察抓,这算什么?
- VB基础版版务处理_20051011
- org.apache.commons.httpclient 访问需要验证的webservice的一些问题
- Elasticsearch8.2扩容挪数据master出现异常
- 孤儿进程、僵尸进程和进程退出(通俗易懂)
- 分别列举人工智能4个主要领域中最牛叉的10位专家
- 解决u盘为只读的方法
- Redis连接池配置详解
热门文章
- 平面设计师okr_平面设计师
- MRPII/ERP实施和应用十大忠告(转)
- it转正述职报告_it行业试用期转正工作总结
- win11输入法处于中文状态打字仍是英文解决办法
- python get dummies_pandas使用get_dummies进行one-hot编码的方法
- python爬虫解决赶集网扫码获取手机号
- matlab 扩大虚拟内存
- (34)ObjectARX2015 + vs2012组字典
- Hexo + NexT 通过自定义样式添加 Bilibili 图标
- 大彩串口屏 虚拟串口调试