java网络聊天编程及其代码
结合所学网络开发应用程序,本文将介绍一个网络聊天程序的开发过程,该程序使用了Swing设置的UI界面,并结合java语言多线程技术使网络聊天更加符合实际需要(可以不间断的,收发多条信息)。
网络聊天
结合所学网络开发应用程序,本文将介绍一个网络聊天程序的开发过程,该程序使用了Swing设置的UI界面,并结合java语言多线程技术使网络聊天更加符合实际需要(可以不间断的,收发多条信息)。
最终效果如下
程序的开发步骤如下:
1、 创建UDPmessage类,继承JFrame成为框体类,并实现ActionListener接口。
该类中包括多个成员变量,它们分别是信息接收文本域,信息发送文本框,IP文本
框、“发送”按钮和数据包套接字。
2、
3、 在构造方法中初始化窗体组间,并将组间布局 到窗体中,然后调用Server()方法创建数据包套接字,并添加“发送”按钮的事件监听器。 编写Server()方法,该方法负责创建DatagramSocket数据包套接字和接收信
息的DatagramPacket数据包,最重要的是,该方法在线程中使用无限循环实现数
据包的接收,这是网络程序设计必须掌握的接收数据的方法,这样才能保证数据的
持续接收。然后获取数据包中的IP信息,也就是数据包发送者的IP地址,这个
IP地址将随数据包中的信息一起添加到信息接收文本域中,以区分信息的发布者。
4、 实现ActionListener借口中的actionPerformed()方法,该方法用于处理“发
送”按钮的单击事件,它需要获取ip文本框中的IP信息,这个IP地址将绑定到
准备发送的数据包中。
5、
实现代码如下:
package qq;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import http://doc.guandang.net.*;
import javax.swing.*;
public class UDPmessage extends JFrame implements ActionListener {
/** * */ private static final long serialVersionUID = 1L; private JTextArea text;//信息接收文本域 private JTextField ipText;//IP文本框 private JTextField sendText;//信息发送文本框 private JButton button;//发送按钮 private DatagramSocket socket;//数据报套接字 private JScrollBar vsBar;//滚动条 编写本类的main()主方法,只需简单地创建主窗体对象就可以了。
结合所学网络开发应用程序,本文将介绍一个网络聊天程序的开发过程,该程序使用了Swing设置的UI界面,并结合java语言多线程技术使网络聊天更加符合实际需要(可以不间断的,收发多条信息)。
setTitle("UDP聊天程序");//设置窗体标题 setBounds(100,100,400,300);//窗体定位与大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作为退出程序 setLayout(new BorderLayout());//窗体使用边界布局管理器 text=new JTextArea();//实例化信息接收文本域 text.setEditable(false);//信息接收文本域不可编辑 JScrollPane textPanel=new JScrollPane(text);//信息接收文本域添加滚动面板 vsBar=textPanel.getVerticalScrollBar();//获取滚动面板的垂直滚动条 add(textPanel,BorderLayout.CENTER);//添加滚动面板到窗体居中位置 JPanel panel=new JPanel();//创建panel面板 BorderLayout panelLayout=new BorderLayout();//创建边界布局管理器 panelLayout.setHgap(5);//设置布局水平边界 panel.setLayout(panelLayout);//将布局管理器注入panel面板 ipText=new JTextField("192.168.***.***");//实例化IP文本框(请输入你自public UDPmessage(){ 己IP地址)
panel.add(ipText,BorderLayout.WEST);//添加文本框到panel面板 sendText=new JTextField();//实例化信息发送文本框 panel.add(sendText,BorderLayout.CENTER);//添加信息发送文本框到panel button=new JButton("发送");//实例化发送按钮 panel.add(button,BorderLayout.EAST);//添加按钮到panel面板 add(panel,BorderLayout.SOUTH);//添加面板到窗体 setVisible(true);//显示窗体 server();//调用Server()方法 button.addActionListener(this);//添加按钮事件监听器 } try{ socket=new DatagramSocket(9527);//实例化数据报套接字 byte[] buf=new byte[1024]; final DatagramPacket dpl=new DatagramPacket(buf,buf.length);//创建接Runnable runnable=new Runnable(){//定义线程 public void run(){ while(true){ //使用无限循环体 try{ Thread.sleep(100);//线程休眠时间为100ms socket.receive(dpl);//接收数据包 int length=dpl.getLength(); String message=new String(dpl.getData(),0,length);//private void server(){ 收数据的数据包 获取数据包的字符串信息
结合所学网络开发应用程序,本文将介绍一个网络聊天程序的开发过程,该程序使用了Swing设置的UI界面,并结合java语言多线程技术使网络聊天更加符合实际需要(可以不间断的,收发多条信息)。
} } }; } } if(!InetAddress.getLocalHost().getHostAddress().equals(ip)) } text.append(ip+":\n "+message+"\n"); vsBar.setValue(vsBar.getMaximum());//控制信息滚动 }catch(IOException e){ e.printStackTrace(); e.printStackTrace(); }catch(InterruptedException e){ new Thread(runnable).start(); e.printStackTrace(); }catch(SocketException e){
public void actionPerformed(ActionEvent ev){
}
} } UDPmessage udp= new UDPmessage(); udp.setVisible(true); public static void main(String[] args) { try{ } String ip=ipText.getText();//获取IP文本框内容 InetAddress address=InetAddress.getByName(ip); byte[] data=sendText.getText().getBytes();//获取发送的数据 DatagramPacket dp=new DatagramPacket(data,data.length,address,9527);//定义数据包 String myip=InetAddress.getLocalHost().getHostAddress();//获取本机IP //将发送信息添加到信息接收文本域中 text.append(myip+":\n "+sendText.getText()+":\n"); socket.send(dp);//发送数据包 sendText.setText(null); e.printStackTrace(); e.printStackTrace(); }catch(UnknownHostException e){ }catch(IOException e){
结合所学网络开发应用程序,本文将介绍一个网络聊天程序的开发过程,该程序使用了Swing设置的UI界面,并结合java语言多线程技术使网络聊天更加符合实际需要(可以不间断的,收发多条信息)。
在两台计算机上分别运行,修改IP文本框中的IP地址为接收一方的IP,输入内容点击放松就可以接收了。
…… 此处隐藏:2217字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




