/* * 本程序实现了基于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协议的局域网网络聊天工具相关推荐

  1. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  2. java udp 聊天室_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. ...

  3. 小成开发日记---利用Qt/C++实现基于Udp协议的网络聊天室(分服务端和客户端的开发【轻聊v1.0.1】)

    作者:小成Charles 原创作品 转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/112363393 一.引言 最 ...

  4. Java网络编程——基于UDP协议的聊天室

    UDP简述    UDP(User Datagram Protocol)协议是Internet 协议集支持的一个无连接的传输协议,中文名为用户数据报协议.它为应用程序提供了一种无需建立连接就可以发送封 ...

  5. 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具。QQ_Chat

    代码下载地址 原博客地址 QQ_Chat 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具. (内含报告) 工具: Eclipse.Navicat for MySQL ...

  6. 基于WebServices简易网络聊天工具的设计与实现

    基于WebServices简易网络聊天工具的设计与实现 Copyright 朱向洋 Sunsea ALL Right Reserved 一.项目内容 本次课程实现一个类似QQ的网络聊天软件的功能:服务 ...

  7. 搬砖:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议--QUIC详解 本文来自腾讯资深研发工程师罗成的技术分享,主要介绍 QUIC 协议产生的背景和核心特性等. 1.写在前面 如果你的 App,在不需要任 ...

  8. 网络编程应用:基于UDP协议【实现文件下载】--练习

    要求: 基于UDP协议实现文件下载 发送方–请求–接收方发送文件–发送方接收文件 代码: 发送方: package Homework1;import java.io.File; import java ...

  9. python语言视频-Python语言之Python3 实现简易局域网视频聊天工具

    本文主要向大家介绍了Python语言之Python3 实现简易局域网视频聊天工具,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 操作系统为 Ubuntu 16.04,OpenCV ...

最新文章

  1. SpreadJS 类Excel表格控件 - V12 新特性详解
  2. JSP实现大学生综合素质测评系统
  3. c语言迭代法求平方根_求平方根问题 (C++ 实现)
  4. 原始jdbc操作的分析
  5. linux命令 查找包含指定字符串的文件
  6. UncategorizedSQLException异常处理办法
  7. CodeForces - 1612A Distance
  8. 【车间调度】基于matlab遗传算法求解柔性车间调度问题【含Matlab源码 660期】
  9. PNG转ICO在线转换
  10. pip 和 conda 什么区别?
  11. 纽约市立大学布鲁克林学院计算机系,纽约市立大学布鲁克林学院教授张嘉如 带你体验《舌尖上的道德》...
  12. Greenplum Python专用库gppylib学习——base.py
  13. 上班时间写开源软件,结果被单位告被警察抓,这算什么?
  14. VB基础版版务处理_20051011
  15. org.apache.commons.httpclient 访问需要验证的webservice的一些问题
  16. Elasticsearch8.2扩容挪数据master出现异常
  17. 孤儿进程、僵尸进程和进程退出(通俗易懂)
  18. 分别列举人工智能4个主要领域中最牛叉的10位专家
  19. 解决u盘为只读的方法
  20. Redis连接池配置详解

热门文章

  1. 平面设计师okr_平面设计师
  2. MRPII/ERP实施和应用十大忠告(转)
  3. it转正述职报告_it行业试用期转正工作总结
  4. win11输入法处于中文状态打字仍是英文解决办法
  5. python get dummies_pandas使用get_dummies进行one-hot编码的方法
  6. python爬虫解决赶集网扫码获取手机号
  7. matlab 扩大虚拟内存
  8. (34)ObjectARX2015 + vs2012组字典
  9. Hexo + NexT 通过自定义样式添加 Bilibili 图标
  10. 大彩串口屏 虚拟串口调试