JAVA聊天程序的设计代码与报告_第1页
JAVA聊天程序的设计代码与报告_第2页
JAVA聊天程序的设计代码与报告_第3页
JAVA聊天程序的设计代码与报告_第4页
JAVA聊天程序的设计代码与报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统需求分析网络聊天室通常直称聊天室, 是一种人们可以在线交谈的网络论坛, 在同一 聊天室的人们通过广播消息进行实时交谈。在当今信息时代,越来越多的聊天工具被应用, java 语言是当今流行的网 络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用 java 语言不仅可以实现大型企业级的分布式应用系统, 还能够为小型的的, 嵌入式设 备进行应用程序的开发。 面向对象的开发是当今世界最流行的开发方法, 它不仅 具有更贴近自然地语义, 而且有利于软件的维护和继承, 锻炼我们熟练地应用面 向对象的思想和设计方法解决实际问题的能力。本程序正是用 java 语言实现了简单聊天功能。它是图形界

2、面,线程,流与 文件系统等技术的综合应用。其界面主要采用了 java.awt包,java.swing包等。系统总体设计1. 对性能的规定由于本软件知识一个聊天程序,程序只提供用户之间的聊天功能,故对网络 传输数据要求不是很高,只要正常的传输速度就可以了。2 数据管理IP 地址(IP),端口( Port )3. 开发环境本软件采用 Java 语言编写, Java 语言是一种跨平台的编程语言,所以本软 件对操作系统没有特别的要求。而网络传输方面采用 TCP/IP 网络传输协议或者 是 RMI。4. 设计概要(1)本软件客户端与用户共用一段程序。客户端编译运行后,在窗口选择 侦听。用户编译运行后,在

3、窗口选择 连接。( 2)本软件实现的功能有1)允许服务器侦听客户端,客户端连接到服务器2)允许服务区与客户端之间进行聊天;3)允许服务器与客户端更改背景颜色;4)允许服务器与客户端更改字体颜色;5)服务器与客户端时,会显示容发送时间;6)允许服务器与客户端用鼠标点击“发送”,按ENTERS均可发送容7)允许服务器与客户端用鼠标点击关闭时关闭聊天窗口1. 代码功能描述1)程序中引入的包:import java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;2)代码中自定义的类:类名: c

4、hatHouse继承的类: JFrame实现的接口: ActionListener, Runnable 作用:构造服务器界面以及客户端界面。定义的对象: TextArea ta;JTextField ip;JTextField port;JButton btn_server;JButton btn_client;JButton btn_backGroundCol;JButton btn_fontCol;JTextField send_text;JButton btn_send;JButton btn_close;JLabel pic;Socket skt;构造方法: public chatHo

5、use() 主要成员方法: public void run()public void actionPerformed(ActionEvent e) public void doServer() public void doSend()2. 源代码 chatHouse.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;import java.util.*;public class chatHouse extends JFrame implements Acti

6、onListener, Runnableprivate TextArea ta;private JTextField ip;private JTextField port;private JButton btn_server;private JButton btn_client;private JButton btn_backGroundCol;private JButton btn_fontCol;private JTextField send_text;private JButton btn_send;private JButton btn_close;private JLabel pic

7、;private Socket skt;public void run()tryBufferedReader br = new BufferedReader(new InputStreamReader(skt.getInputStream();while(true)String s = br.readLine(); / 从网络读 if(s=null) break; ta.append(s + n); catch(Exception e) e.printStackTrace();public void actionPerformed(ActionEvent e)if(e.getSource()=

8、btn_server) doServer();if(e.getSource()=btn_client) doClient();if(e.getSource()=btn_send) doSend();public void doServer()tryServerSocket server = newServerSocket(Integer.parseInt(port.getText();skt = server.accept(); ta.append( 连接成功! n); new Thread(this).start();catch(Exception e)ta.append( 服务器启动失败!

9、 n); public void doClient()trySocket(ip.getText(),skt = newInteger.parseInt(port.getText();ta.append( 连接成功! n);new Thread(this).start();catch(Exception e)ta.append( 连接失败! n);public void doSend()Calendar c=Calendar.getInstance();int y=c.get(c.YEAR);int M=c.get(c.MONTH)+1;int d=c.get(c.DAY_OF_MONTH);i

10、nt h=c.get(c.HOUR_OF_DAY);int mm=c.get(c.MINUTE);int ss=c.get(c.SECOND);tryPrintWriter pw = new PrintWriter(skt.getOutputStream();String s = send_text.getText(); if(s=null) return;ta.append(y+-+M+-+d+ +h+:+mm+:+ss+n); ta.append(s+n);pw.println(y+-+M+-+d+ +h+:+mm+:+ss); pw.println(s);pw.flush();send_

11、text.setText(); catch(Exception e) ta.append( 发送失败! n);public chatHouse() super( 聊天室 ); this.setBounds(100,100,550,430); Container cc = this.getContentPane();JPanel p1 = new JPanel(); cc.add(p1, BorderLayout.NORTH);JPanel p2 = new JPanel(); cc.add(p2,BorderLayout.CENTER);JPanel p3 = new JPanel(); cc

12、.add(p3,BorderLayout.SOUTH); pic=new JLabel(new ImageIcon(12.gif); cc.add(pic,BorderLayout.EAST); p1.add(new JLabel(IP: );ip = new JTextField(, 10);p1.add(ip);p1.add(new JLabel(Port: ); port = new JTextField(7777, 4);p1.add(port); btn_server = new JButton( 侦听 ); p1.add(btn_server);btn_clien

13、t = new JButton(连接 );p1.add(btn_client);btn_backGroundCol =new JButton( 背景色 ); p1.add(btn_backGroundCol);btn_fontCol =new JButton( 字体颜色 );p1.add(btn_fontCol);p2.setLayout(new BorderLayout()ta = new TextArea();p2.add(ta, BorderLayout.CENTER);send_text = new JTextField(Hello.); p2.add(send_text, Borde

14、rLayout.SOUTH);btn_send = new JButton( 发送 ); p3.add(btn_send, BorderLayout.WEST); btn_close =new JButton( 关闭 ); p3.add(btn_close, BorderLayout.CENTER);/关闭 按钮监听器btn_close.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)System.exit(100););/ 背景变色监听btn_backGroundCol.addAc

15、tionListener(new ActionListener() public void actionPerformed(ActionEvent e) JColorChooser chooser4=new JColorChooser();Color color=chooser4.showDialog(null, 背景颜 ,Color.yellow); ta.setBackground(color););/ 字体变色监听btn_fontCol.addActionListener(new ActionListener() public void actionPerformed(ActionEve

16、nt e)JColorChooser chooser4=new JColorChooser();Color color=chooser4.showDialog(null, 字体颜色 ,Color.black); send_text.setForeground(color);ta.setForeground(color););II 按ENTERS可发送监听btn_server.addActionListener(this); btn_client.addActionListener(this);btn_sen d.addActi on Liste ner(this); setDefaultClo

17、seOperati on(J Frame.EXIT_ON_CLOSE); sen d_text.addKeyListe ner(new KeyAdapter() public void keyPressed(KeyEve nt e) if(e.getKeyCode()=KeyEve nt.VK_ENTER) doSe nd(););public static void main( Stri ng args)new chatHouse().setVisible(true);import java.util.*;3. 程序测试编译运行程序后,先选择对方IP,选择同样的Port。服务器先侦听,客户 端再连接。连接成功,窗口会显示“连接成功!”字样。接下来就可以聊天了。(2)服务器与客户端聊天。服务器将背景颜色设为粉红,字体颜色设为蓝色 客户端将背景颜色设为蓝色,字体颜色设为红色。四小结1 通过本次课程设计,使得自己懂得理论和实践

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论