《JAVA程序设计》课程设计即时聊天工具.doc
《《JAVA程序设计》课程设计即时聊天工具.doc》由会员分享,可在线阅读,更多相关《《JAVA程序设计》课程设计即时聊天工具.doc(16页珍藏版)》请在三一办公上搜索。
1、JAVA程序设计课程设计 - Chatter即时聊天工具班 级: 姓 名: 学 号: 指导老师: 日 期: 目录1.引言.32.功能简介.33.开发环境.34.课程设计目的.35.使用手册.36.程序源代码.4 4.1 serverJFrame.java4 4.2 clientJFrame.java97.程序运行效果图.148.心得体会161.引言 相信大家一想到基于TCP/IP协议的通信,都会想到利用Socket类对象建立一条可靠的连接,这样就客户机/服务器就在这条连接上可靠地传输数据。但是我是利用基于UDP协议的通信原理,制作了一个类似QQ游戏聊天室的聊天软件。虽然软件功能还不是很完善,不
2、过,只要花点时间,参考一些书籍或类似的聊天软件的源代码,相信可以把这个聊天软件做得更好,功能更加齐全,给用户带来更多娱乐体验。2.功能简介1)利用AWT/Swing设计了软件界面,界面简洁美观,聊天记录界面形式是模仿QQ聊天记录格式的,即不管是服务器还是客户端发的信息,都会有时间显示。2)本软件还具有保存聊天记录的功能。3)软件是不允许服务器或客户端发送空信息的。发送信息为空时,消息对话框给予信息提示。4)软件显示聊天信息的文本区域添加了垂直滚动条,防止发送和接收的信息不能全部显示不出来。5)实现了对不文明语言的过滤以及线程处理机制。6)软件对IP格式进行了必要的设置,防止IP地址输入不正确导
3、致程序出现假死7)用户和服务器的昵称不能为空,当为空时不给予发送信息。8)当然也可以实现本地聊天。3.开发环境1)PC机2)Windows 7系统3)Internet连接4)Eclipse软件4.课程设计目的1)理解多线程机制2)学会利用AWT/Swing设计软件界面 3)掌握输入输出流的使用方法。4)懂得事件处理的方法及原理。5)明白Java网络的基本知识,如UDP协议的通信原理。5.使用手册 首先启动服务器,填写用户的IP地址,注意正确填写IP地址的格式,不要写错,输入完IP地址后,点击“确定”按钮进行验证;然后填写你喜欢的昵称,注意昵称不能为空,否则,将无法发送信息;发送的信息要文明化,
4、如果你使用了不文明的语言,将会被屏蔽,不给予发送。如果你觉得想保存聊天记录,你可以点击“保存”按钮,将聊天记录保存为文本文件;如果你玩累了,你可以点击右上角的“关闭”按钮,退出聊天室。6.程序源代码6.1 serverJFrame.javapackage server;import java.awt.event.*; import java.awt.*; import java.io.OutputStreamWriter;import javax.swing.*; import java.io.File;import java.io.FileNotFoundException;import j
5、ava.io.FileOutputStream;import java.io.IOException;import .*;import java.util.Date;import java.io.*;public class serverJFrame extends JFrame implements ActionListener,Runnable JButton sendButton=null;JButton saveButton=null;JButton IPButton=null;JTextField nameSpace=null;JTextField IPField=null;JTex
6、tArea messageArea=null;JTextField sendField=null;java.util.Date date=null;String IP;public serverJFrame()date=new java.util.Date();JPanel northPanel=new JPanel(); JPanel IPPanel=new JPanel(); JPanel southPanel=new JPanel(); JPanel namePanel=new JPanel(new FlowLayout(); JLabel sendLabel=new JLabel(发送
7、内容:); JLabel nameChangeLabel=new JLabel(我的昵称:); JLabel IPLabel=new JLabel(好友地址:); nameSpace=new JTextField(,20); IPField=new JTextField(,20); messageArea=new JTextArea(,20,10); messageArea.setLineWrap(true); messageArea.setEditable(false); sendField=new JTextField(20); JScrollPane message=new JScrol
8、lPane(messageArea); /为文本区添加滚动条 sendButton=new JButton(发送); saveButton=new JButton(保存); IPButton=new JButton(确定); Box centerBox=Box.createVerticalBox(); namePanel.add(nameChangeLabel); namePanel.add(nameSpace); namePanel.add(saveButton); IPPanel.add(IPLabel); IPPanel.add(IPField); IPPanel.add(IPButto
9、n); centerBox.add(namePanel); centerBox.add(IPPanel); centerBox.add(message); JFrame frame=new JFrame(服务器端); northPanel.add(sendLabel); northPanel.add(sendField); northPanel.add(sendButton); frame.add(northPanel,North); frame.add(southPanel,South); frame.add(centerBox,Center); frame.setBounds(150,30
10、0,380,400); frame.setResizable(false); sendButton.addActionListener(this); IPButton.addActionListener(this); saveButton.addActionListener(this); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); Thread thread=new Thread(this);/创建线程对象 thread.start();/线程
11、负责接收数据包 frame.setVisible(true);public static class Protocol /定义三个静态常量,分别为错误信息,正常信息,还有快乐用语public static final int ERROR_MSG = 0;public static final int NOMAL_MSG = 1;public static final int HAPPY_MSG = 2;public static int processString(String str)/对以下不文明用语进行过滤if(str.indexOf(TMD) = 0|str.indexOf(mothe
12、r fuck) = 0|str.indexOf(去你的) = 0|str.indexOf(你妈的) = 0)return ERROR_MSG;else if(str.indexOf(FUCK) = 0|str.indexOf(奶奶的) = 0|str.indexOf(我得死你) = 0)return ERROR_MSG;else if(str.indexOf(他妈的) = 0|str.indexOf(shit) = 0|str.indexOf(got dam it) = 0|str.indexOf(我操) = 0|str.indexOf(fuck you) = 0)return ERROR_M
13、SG;else if(str.indexOf(哈哈) = 0|str.indexOf(呵呵) = 0|str.indexOf(嘿嘿) = 0)return HAPPY_MSG;/对快乐用语进行返回elsereturn NOMAL_MSG;public class Time Date date;/创建日期对象String strTime;/创建字符串对象Time()date=new java.util.Date(); strTime=date.toString().substring(11,19);/获取时间为时:分:秒/单击发送按钮从端口321发送数据包 public void actionP
14、erformed(ActionEvent event)if(event.getSource()=IPButton) if(IPField.getText().trim().matches(0-9*.0-9*.0-9*.0-9*) IP=IPField.getText(); IPField.setEditable(false); else JOptionPane.showMessageDialog(this, IP地址格式错误!,警告, JOptionPane.WARNING_MESSAGE); else if(event.getSource()=sendButton) Time time=ne
15、w Time(); if(IPField.getText().length()=0) JOptionPane.showMessageDialog(this, IP地址不能为空!,警告, JOptionPane.WARNING_MESSAGE);IPField.setText(); else if(nameSpace.getText().length()=0) JOptionPane.showMessageDialog(this, 昵称不能为空!,警告, JOptionPane.WARNING_MESSAGE); else if(sendField.getText().length()=0) J
16、OptionPane.showMessageDialog(this, 发送的信息不能为空!,警告, JOptionPane.WARNING_MESSAGE); else try String Sendmessage=nameSpace.getText()+ +time.strTime+rn +sendField.getText();/设置要发送的信息 if(Protocol.processString(Sendmessage)=Protocol.ERROR_MSG)messageArea.append(已被屏蔽+sendField.getText()+。+注意文明用语!+rn);sendFie
17、ld.setText();else byte buffer=Sendmessage.getBytes();/将要发送的信息转化字节 InetAddress address=InetAddress.getByName(IP);/指定本地IP127.0.0.1 /创建发送数据据 DatagramPacket data=new DatagramPacket(buffer,buffer.length,address,321); DatagramSocket dataSocket=new DatagramSocket();/数据报套接字,指定端口号为321 String s=nameSpace.getT
18、ext();/获取昵称 String sendText=sendField.getText();/获得发送的信息 messageArea.append(s+ +time.strTime+rn +sendText+rn);/向文本区添加发送的信息 dataSocket.send(data);/正式发送数据 sendField.setText();/数据发送完后,“发送的内容”处清空 nameSpace.setEditable(false);/ 发送完信息“昵称”处不可以编辑 catch(Exception e)e.printStackTrace();/异常处理 else if(event.get
19、Source()=saveButton) String path; FileOutputStream fos; OutputStreamWriter osw=null; FileDialog filedialog_save=new FileDialog(this,保存,FileDialog.SAVE); filedialog_save.setVisible(true); path=filedialog_save.getDirectory()+filedialog_save.getFile()+.txt; File txt=new File(path); if(!txt.exists() try
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA程序设计 JAVA 程序设计 课程设计 即时 聊天工具
链接地址:https://www.31ppt.com/p-2387248.html