当前位置:文档之家› java聊天室课程设计报告

java聊天室课程设计报告

java聊天室课程设计报告
java聊天室课程设计报告

课程设计报告

2011 ~ 2012 学年第一学期

学号 20104053020 姓名胡勇昌

院系信息工程与技术

专业计算机工程系

课程名称 JAVA程序设计

课程设计名称局域网内的多功能聊天室

学时学分 1

指导教师许烁娜

2011年12 月25 日

目录

课程设计报告 (1)

第1章引言 (3)

1.1背景 (3)

1.2相关技术 (3)

1.2.1 JAVA概述 (3)

1.2.2 Socket (3)

1.2.3 TCP 三次握手 (4)

1.3术语 (4)

第2章需求分析与系统设计 (5)

2.1需求分析 (5)

2.2系统设计 (6)

2.2.1多用户在线方案 (6)

2.2.2 系统功能 (6)

第3章系统实施 (6)

3.1聊天室窗口 (6)

3.2建立客户端窗口 (8)

3.3内嵌“私聊”窗口 (9)

3.4客服端类继承客户端窗口类,并内嵌私聊程序 (10)

第4章测试 (15)

4.1测试环境与使用方法 (15)

4.2功能测试 (15)

4.2.1聊天室窗口 (15)

4.2.2 客户端窗口 (16)

4.2.3 内嵌“私聊”窗口 (16)

参考文献 (16)

第1章引言

1.1 背景

网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。聊天室可以建立在即时通讯软件(如MSN Messenger、QQ)、P2P软件、万维网(如Halapo,Meebo ) 等基础上,万维网方式更为普通和种类繁多,交谈的手段不局限于文本,更包括语音、视频。通常聊天室是按照房间或频道为单位的,在同一房间或频道的网人可以实时地广播和阅读公开消息。一般情况下,与其它网络论坛、即时通讯不同的是,聊天室不保存聊天记录。

1.2 相关技术

1.2.1 JA V A概述

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

1.2.2 Socket

Socket是java中需一要编写较低层次的网络通信程序(例如Cljent/server应用程序)

时提供的一种通讯机制。Socket是两个程序进行双向数据传输的网络通信的端点,一般

由一个地址加上一个端口号来标一识。每个服务程序都在一个众所周知的端口上提供服务,而想使用服务的客户端程序则需要连接该端口。通过Socket的数据是原始字节流信息,通信双方必须根据约定的协议对数据进行处理与解释。

Socket通信机制提供了两种通信.方式:有连接方式(TCP)和无连接方式(UDP数

据报)。有连接方式中,通信双方在开始时必须进行一次连接过程,建立一条通信链路。

通信链路提供了可靠的,全双工的字节流服务。无连接力一式中,通信双方不存在一个连接过程,一次网络I/O以一个数据报形式进行,而每次网络I /O可以和不同.主机的不

同进程进行。无连接方式开销小于有连接方式,但是所提供的数据传输服务不可靠,不

能保证数据报一定到达目的地”」·。

JA V A的有连接通信采用流式I/O模式。Socket是两个进程间通信链的端点,每个Sockct有两个流:一个输入流和一个输出流。只要向Sockct的输出流写,一个进程就可

以通过网络连接向其他进程发送数据;同样,通过读Sockt的输入流,就可以读取传输

来的数据。

有连接通信一般要经历以下四个基本步骤ii

(1)创建Sockct,建立连接;

(2)打开连接到Sockct的输入/输出流;

(3)按照一定的一脚议对Socket进行读/写操作;

(4)关闭Socket。

第(3)步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种

程序中基本相同。

1.2.3 TCP 三次握手

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。

1.3 术语

暂无

第2章需求分析与系统设计

2.1 需求分析

从技术发面来看,Java语言的优点一要表现在:简.单、面向对象、多线程、安全性

等方面。

1.简单性

Java与C++语言灰常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对

必要的功能,如头文件、顶处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了内存管理的一作。这使程序一设计更加简便,同时减少了出错的可能。

2.面向对象

Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,

很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的一方法,从而既实现了代码的复用,又提供了一种动态的解决方案。

Java是一种完全面向对象的程序设计语一言,它除了数组、布尔和字符二个基本数据类型外的其它类都是对象,它不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。

Java同样支持继承特性,Java的类可以从其它类中继承行为,但Java只支持类的

单重继承,即每个类只能从一个类中继承。

Java支持界面,界面允许程序员定义方法但又不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。

3.多线程

多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容.易实现网络上的实时交互操作。

Java程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线

程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率。

4.安全性

Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

2.2 系统设计

2.2.1多用户在线方案

2.2.2 系统功能

聊天室程序通常需要完成以下一些基本功能:

(I)登录聊天室;

(2)启动服务器;

(3)关闭服务器;

(4)用户之间的聊天;

(5)退出聊天室。

本系统其体功能需求如下:

(1)聊天室管理员经登录界面登录到管理界而,即系统的服务器端。用户经登录界而

都进入聊天大厅。

(2)不论是管理员还是用户都需一要在登录界面输入正确的用户名和密码后才可以登录

到各自的界面中去。

(3)系统的两个主要界面都是为方便管理员和用户操作的。首先,管理员进入到管理

界而后可以方便的启动/停止服务器,看到在线用户的信息和聊人信息、。用户进入到聊天大厅中可以聊天,查看服务器状态。

(4)一个用户退出聊天室对其他用户不能产生影响,而服务器断开与客户端的连接则所有的用户都失去与服务器的连接。

(5)用户的聊天信息录入,重写,发送,接收方便,快捷。

(6)服务器状态,聊天信息和在线用户人数及时刷新。

(7)聊天室系统运行稳定、安全性高、性能可靠。

第3章系统实施

3.1聊天室窗口

建立服务端窗口类:窗口程序如下

import java.awt.Button;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.List;

import java.awt.TextArea;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

public class chatroomW {

JFrame f=new JFrame("局域网聊天室");

JLabel label1=new JLabel("端口");

JLabel label2=new JLabel("发送");

Button button1=new Button("启动服务");

Button button2=new Button("发送");

Button button3=new Button("刷新用户列表");

JTextField text1=new JTextField(5);

JTextField text2=new JTextField(25);

TextArea area1=new TextArea(26,84);

List userList=new List(27);

JScrollPane scro1,scro2;

public chatroomW(){

chat();

}

public void chat(){

area1.setBackground(new Color(204,255,255));

area1.setForeground(Color.black);

userList.setBackground(Color.gray);

userList.setForeground(Color.white);

f.setLayout(new FlowLayout());

f.add(area1);

f.add(userList);

f.add(label1);

f.add(text1);

f.add(button1);

f.add(text2);

f.add(button2);

f.add(button3);

f.setBounds(300,200,750,485);

f.setResizable(false);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

area1.setEditable(false);

text1.setText("10000");

myEvent();

}

public static void main(String args[]){

new chatroomW();

}

public void myEvent(){}

}

3.2 建立客户端窗口

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.TextArea;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

public class ClientW {

JFrame f=new JFrame("聊天室");

JScrollPane js;

TextArea area=new TextArea(19,67);

JTextField text1=new JTextField(12);

JTextField text2=new JTextField(5);

JTextField text3=new JTextField(5);

JTextField text4=new JTextField(20);

JButton button1=new JButton("连接");

JButton button2=new JButton("发送");

JButton button3=new JButton("私聊");

JLabel label1=new JLabel("服务器地址");

JLabel label2=new JLabel("服务器端口");

JLabel label3=new JLabel("昵称");

public ClientW(){

chat();

}

public void chat(){

area.setBackground(new Color(204,255,255)); // area.setForeground(Color.black);

f.setLayout(new FlowLayout());

f.setBounds(300,200,500,410);

f.add(label1);

f.add(text1);

f.add(label2);

f.add(text2);

f.add(button1);

f.add(area);

f.add(label3);

f.add(text3);

f.add(text4);

f.add(button2);

f.add(button3);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setResizable(false);

area.setEditable(false);

text2.setText("10000");

text4.setText(null);

myEvent();

}

public void myEvent(){}

public static void main(String args[]){

new ClientW();

}

}

3.3 内嵌“私聊”窗口

class netchat{

JFrame f=new JFrame("私聊");

JLabel label1,label2,label3;

Button button1,button2;

JTextField text1,text2,text3,text4;

TextArea textarea;

public netchat(){

f.setLayout(new FlowLayout());

f.setBounds(300,200,400,310); //设置窗口大小和位置;

f.setResizable(false); //让窗口大小固定;

label1=new JLabel("对方主机");

label2=new JLabel("本地端口");

label3=new JLabel("对方端口");

button1=new Button("连接");

button2=new Button("发送");

text1=new JTextField(7);

text2=new JTextField(3);

text3=new JTextField(3);

text4=new JTextField(20);

textarea=new TextArea(13,53);

textarea.setEditable(false);

textarea.setBackground(new Color(204,250,255));

f.add(label1);

f.add(text1);

f.add(label2);

f.add(text2);

f.add(label3);

f.add(text3);

f.add(button1);

f.add(textarea);

f.add(text4);

f.add(button2);

f.setVisible(true);

// f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//关闭窗口程序同时关闭;

myEvent();

}

3.4客服端类继承客户端窗口类,并内嵌私聊程序

import java.awt.Button;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintStream;

import https://www.doczj.com/doc/bd1089430.html,.DatagramPacket;

import https://www.doczj.com/doc/bd1089430.html,.DatagramSocket;

import https://www.doczj.com/doc/bd1089430.html,.InetAddress;

import https://www.doczj.com/doc/bd1089430.html,.Socket;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class Client extends ClientW{

Socket s=null;

public Client(){}

public void myEvent(){

button1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

try{

s=new

Socket(text1.getText().toString(),Integer.parseInt(text2.getText()));

new Thread(new LinkC()).start();

area.append("[系统消息]:连接成功\n");

}catch(Exception ex){area.append("[系统消息]:连接失败\n");} }

});

button2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new SentC();

}

});

button3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new netchat();

}

});

}

public static void main(String args[]){

new Client();

}

class LinkC implements Runnable{

public void run(){

try{

BufferedReader bufIn=

new BufferedReader(new InputStreamReader(s.getInputStream()));

String msg=null;

PrintStream ps=new PrintStream(s.getOutputStream());

ps.println(text3.getText());

while(true){

try{

while((msg=bufIn.readLine())!=null){

area.append(msg+"\n");

}

}catch(Exception ex){break;}

}

}catch(Exception e){}

}

}

class SentC {

public SentC(){

try{

PrintStream ps=new PrintStream(s.getOutputStream());

if(!text4.getText().equals("")){

ps.println(text4.getText());

// area.append(text4.getText()); //服务器自动会返回

text4.setText("");

}

}catch(Exception e){}

}

}

//私聊类

class netchat{

JFrame f=new JFrame("私聊");

JLabel label1,label2,label3;

Button button1,button2;

JTextField text1,text2,text3,text4;

TextArea textarea;

public netchat(){

f.setLayout(new FlowLayout());

f.setBounds(300,200,400,310); //设置窗口大小和位置;

f.setResizable(false); //让窗口大小固定;

label1=new JLabel("对方主机");

label2=new JLabel("本地端口");

label3=new JLabel("对方端口");

button1=new Button("连接");

button2=new Button("发送");

text1=new JTextField(7);

text2=new JTextField(3);

text3=new JTextField(3);

text4=new JTextField(20);

textarea=new TextArea(13,53);

textarea.setEditable(false);

textarea.setBackground(new Color(204,250,255));

text2.setText("10000");

text3.setText("10000");

f.add(label1);

f.add(text1);

f.add(label2);

f.add(text2);

f.add(label3);

f.add(text3);

f.add(button1);

f.add(textarea);

f.add(text4);

f.add(button2);

f.setVisible(true);

// f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//关闭窗口程序同时关闭;

myEvent();

}

public void myEvent(){

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e){

try{

DatagramSocket ds=new DatagramSocket();

byte[] buf="对方已下线".getBytes();

DatagramPacket dp=

new

DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(te xt3.getText()));

ds.send(dp);

ds.close();

}catch(Exception ex){}

}

});

button2.addActionListener(new ActionListener()//事件源是button2

{

public void actionPerformed(ActionEvent e)

{

if(!text4.getText().equals(""))

new Thread(new Send()).start();

}

});

button1.addActionListener(new ActionListener()//事件源是button1

{

public void actionPerformed(ActionEvent e)

{

new Thread(new Rece()).start();

}

});

}

class Send implements Runnable{

public void run(){ try{UdpSend();}catch(Exception e){textarea.append("[系统消息]:发送失败\n");}}

public void UdpSend()throws Exception{

DatagramSocket ds=new DatagramSocket();

byte[] buf=text4.getText().getBytes();

DatagramPacket dp=

new

DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(te xt3.getText()));

textarea.append("[我]:"+text4.getText()+"\n");

text4.setText("");

ds.send(dp);

ds.close();

}

}

class Rece implements Runnable{

int index=0;

public void run(){

try{

UdpRece();

}catch(Exception e){

textarea.append("[系统消息]:连接失败\n");

}

}

public void UdpRece()throws Exception{

while(true){

DatagramSocket ds=new DatagramSocket(Integer.parseInt(text2.getText()));

if(index==0){textarea.append("[系统消息]:连接成功\n");}

byte[] buf=new byte[1024];

DatagramPacket dp=new DatagramPacket(buf,buf.length);

ds.receive(dp);

String data=new String(dp.getData(),0,dp.getLength());

textarea.append(dp.getAddress()+" "+data+"\n");

index++;

ds.close();

}

}

}

}

}

第4章测试

4.1 测试环境与使用方法

测试环境:测试环境:电脑安装Java JDK

服务器端使用方法:打开服务启动,点击“启动服务”,提示“启动服务成功”表示正常启动。否则,先关闭服务端,再重新打开,启动服务。

客户端使用方法:打开客户端,输入“服务器地址”,点击“连接”,如成功连接系统提示“成功连接”,并收到服务端返回的“欢迎”信息,否则关闭并重新启动。

私聊功能使用方法:点击面板上的“私聊”按钮,输入对方的IP地址,点击连接,如连接成功系统会提示“连接成功”。当对方断开时会收到“对方已下线”提示。如果要同时跟多人私聊,则要改变本地端口值,并告知对方。

4.2 功能测试

4.2.1聊天室窗口

4.2.2 客户端窗口

4.2.3 内嵌“私聊”窗口

参考文献

用JA V A程序实现参考文献的录入与生成刘玮玮2009 《福建电脑》

基于Java移动Agent系统的安全参考模型周屹2007 《黑龙江工程学院学报》嵌入式Java虚拟机的性能优化技术李允2004 《计算机工程》

聊天室系统设计报告

青岛科技大学操作系统课程设计 学生班级计算机132班 学生学号1308010204 学生姓名王永远 2016 5 18 ______年 ___月 ___日

目录 设计题目:聊天室系统 (3) 一、设计目的及要求 (3) 1.1设计目的 (3) 1.2设计要求: (3) 二、技术背景 (3) 2.1网络编程 (3) 2.2网络通信 (3) 2.3 Socket (3) 2.4 TCP传输 (4) 2.5 Java的多线程机制 (4) 三、需求分析 (4) 3.1客户端 (4) 3.1.1登录 (4) 3.1.2多人聊天 (4) 3.1.3单人聊天 (5) 3.2服务器端 (5) 四、总体设计 (5) 4.1设计思想流程图 (5) 4.2设计思想分析 (6) 五、详细设计 (6) 5.1客户端设计 (7) 5.1.1登录界面 (7) 5.1.2聊天室界面 (7) 5.1.3单人聊天界面 (7) 5.2服务器端设计 (8) 六、系统测试 (8) 6.1登录测试 (8) 6.1.1用户名为英文字母 (8) 6.1.2用户名为中文 (9) 6.1.3用户名为标点符号 (9) 6.1.4多个用户有重名 (10) 6.1.5服务器地址不合法 (11) 6.1.6端口号不合法 (12) 6.1.7服务器未开启 (12) 6.2群发消息测试 (13) 6.3私聊测试 (15) 6.4用户列表显示测试 (16) 七、心得体会 (16) 八、参考资料 (16) 九、程序清单 (16)

设计题目:聊天室系统 一、设计目的及要求 1.1设计目的 通过该聊天室系统,掌握网络编程的概念及基于网络的C/S模式软件系统开发,掌握基于TCP 协议的Socket编程,掌握Java的多线程机制。 1.2设计要求: 实现多个用户之间类似于QQ的聊天程序,有聊天界面,多用户之间既可以实现群聊,也可以单独聊天。 二、技术背景 2.1网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 2.2网络通信 (1)IP地址:网络中设备的标识,不易记忆,可用主机名 要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。 (2)端口号:用于标识进程的逻辑地址 物理端口网卡口 逻辑端口我们指的就是逻辑端口 A:每个网络程序都会至少有一个逻辑端口 B:用于标识进程的逻辑地址,不同进程的标识 C:有效端口:0~65535,其中0~1024系统使用或保留端口。 (3)传输协议:通信的规则,常见的有UDP,TCP UDP:将数据源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快。 TCP:建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低。 2.3 Socket (1)Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 (2)Socket原理机制 A:通信的两端都有Socket。 B:网络通信其实就是Socket间的通信。 C:数据在两个Socket间通过IO传输。

JAVA聊天室课程设计报告(含源代码压缩文件)

南京晓庄学院 《JAVA程序设计》 课程设计报告 Java聊天室的设计与实现题 目 姓名:戴佳伟 学号:14552019 班级:14软件工程3班 指导教 王峥 师: 完成时间2016.10.7 成绩: 信息工程学院 2016年6月

目录 1引言.............................. . (3) 1.1 java 聊天室开发背景.................................... (3) 1.1java 聊天室开发的目的和意义........ (3) 1.2完成的主要工作.................... (4) 2 需求分析和总体设计................ (5) 2.1 需求分析与设计思路................ (5) 2.1.1 关键技术说明 .................................... . (5) 2.1.2 需求分析..................... ....................... 6 2.1.3 java 聊天室设计方案与思路 (6) 2.1.4 java 聊天室目录结构说明....... (7) 2.2 java 聊天室功能结构 .................................... (8) 3 详细设计.......................... (10) 3.1 java 聊天室模块实现 .................................... (10) 3.1.1 XX 模块实现.................. ..................... 10 4 java 聊天室运行结果.................................... (13) 5课程设计总结...................... .. (15)

java课程设计报告(java聊天室)

Java聊天室课程设计 一、需求分析 1.1开发背景 在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。 1.2设计要求 本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。 1.3设计目的 通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。能将相关的只是运用到相关的实践中去。 1.4功能实现 聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。 服务器的主要功能有 1)在特定端口上进行侦听,等待客户连接 2)用户可以配置服务器的真挺端口

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

聊天室设计报告

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:凯强、许玉军、王明明 完成时间:2015年11月3日

一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2 背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c. 它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3 定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统 经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关的数据 的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的输出。 c、输出 用户基本信息和聊天容 d、输入 用户根据自身需要,发起聊天 e、安全方面的要求 设置管理员 2.2 目标 该软件的设计目标必须尽量达到人力与设备费用的节省,软件的整个设计过程必须通过生产能力的提高、人员工作效率的提高等等使软件开发成本最小化。 2.3 条件、假定和限制 a、本聊天室建议使用寿命为5-10年 b、法律方面的限制:(1)、严禁危害国家信息安全(2)、严禁损害国家荣誉和利益(3)、严禁传播不良信息(5)、严禁抄袭 2.4 进行可行性研究的方法 成本效益分析、对估算问题的看法、软件的作用围、软件的成本估算、速度安排

聊天室设计报告

聊天室设计报告

————————————————————————————————作者:————————————————————————————————日期: ?

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:冯凯强、许玉军、王明明

完成时间:2015年11月3日 一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c.它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学出版社张海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、 使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关 的数据的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有 更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的 输出。 c、输出 用户基本信息和聊天内容 d、输入 用户根据自身需要,发起聊天 e、安全保密方面的要求 设置管理员 2.2 目标

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计 实验报告 题目:****** 院(系):****** 年级专业:****** 学生姓名:****** 指导老师:****** 开始时间:****** 完成时间:******

第一部分:课程设计总述 课程设计目的: 1.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java 程序开发的全过程。 2.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、 Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java 数据库编程等。 3.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。 课程设计总体要求: 1.问题的描述与程序将要实现的具体功能。 2.程序功能实现的具体设计思路或框架,并检查流程设计。 3.代码实现。 4.程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。 5.设计小结(包括) 课程设计题目: 目标 本软件是一个实用聊天程序。项目要实现以下目标: 1)允许用户注册; 2)允许注册用户登录聊天室; 3)登录用户之间进行聊天文件传输; 4)用户可以更改背景音乐; 用户信息的保存 本软件只是一个聊天室程序,所以用户只要打开程序就可以登录。本软件使用文本文件或者数据库来保存用户数据。 需求分析 对功能的规定

1.系统的用例图(对注册用户) 2.用户注册过程

3.用户登录过程 对性能的规定 由于本软件只是一个聊天室程序,程序只是提供用户之间的聊天和文件传输,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。 需要管理的数据 用户的信息如下:用户名,密码,头像,电子邮件,地址。 4 开发环境 本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。

JAVA课程设计聊天室系统

Java课程设计指导书(学生版初稿) 第二章聊天室系统 目标 2.1 背景介绍 2.1.1 业务背景 2.1.2 技术背景 2.2 需求分析 2.2.1功能需求分析 2.2.2 业务对象分析 2.2.3 验收测试要求 2.3 系统设计 2.3.1 总体设计 2.3.2 详细设计 2.4 系统实现 2.5 小结 2.6 展望

第二章聊天室系统 学习目标: 1、理解基于网络的C/S模式的软件系统结构,掌握网络编程的基本概念。 2、了解Java 的多线程机制,掌握Java多线程技术的应用。 3、熟练掌握基于TCP协议的Socket编程。 4、了解Socket编程的协议约定,掌握简单应用协议的开发。 5、进一步巩固发展团队协作能力。 学习寄语:想必大家都用过QQ,其主要功能就是聊天,是不是很想知道它是如何实现的?本项目就是帮你实现一个简单的聊天系统,当然跟商业项目没法比,但从中你却可以了解这些系统是如何实现的,学到开发类似系统的基础知识和基本技能(基本并不意味不实用)。本章的内容有一定难度(多线程、基于TCP的应用协议编程),所以系统的开发采用了“增量迭代”的开发方式,由简易到繁难,希望你能顺利前行。我们的信念依然是:“不抛弃,不放弃”。你的改变和收获依然是老师真诚的期待,期待你更踏实、更自信。Come on!

2.1 背景介绍 2.1.1 业务背景 随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ 的及时通讯系统就变得非常有意义了。“Happy Chat”聊天系统应运而生,它较之QQ 的唯一好处是自主开发,用的放心,更适合在局域网内使用。它提供的功能远不如QQ丰富,但应具有如下功能:(1)与聊天室成员一起聊天;(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。(8)保存用户聊天信息。 2.1.2 技术背景 本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。系统采用两层C/S体系结构,C端负责通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能;S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。C端和S端是通过网络交互的,其基本原理如图1所示: 图1 C/S通讯基本原理图

JAVA聊天室实验报告

JA V A聊天室实验报告 姓名:马琳越 班级:131114 学号:13111368 日期:2014年4月23日

目录 目录 (2) JA V A程序课程设计任务书 (3) 摘要 (4) 第1章引言 (5) 第2章聊天室系统的设计 (7) 第3章界面设计 (11) 第4章总结 .................................................................................. 错误!未定义书签。

Java聊天室的设计任务书 1.主要内容 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求 A.服务器端主要功能 (1).在特定端口上进行侦听,等待客户端连接。 (2).用户可以配置服务器端的侦听端口,默认端口为8888。 (3).向已经连接到服务器端的用户发送系统消息。 B. 客户端主要功能 (1).连接到已经开启聊天服务的服务器端。 (2).用户可以配置要连接的服务器端的IP地址和端口号。 (3).用户可以配置连接后显示的用户名。 (4).用户可以向所有人或某一个人发送消息。 3.主要参考文献及运用工具 (1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义 (2)使用技术:Java 使用开发工具:Eclipse

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

Java聊天室课程设计报告

UML课程设计 题目网络聊天程序开发设计与实现 学号:201515614376 姓名:卫国辉 指导教师: 完成时间:2017年 12月

目录 1.摘要 (2) 2.绪论 0 2.开发环境 0 3.需求分析 (1) 3.1程序简介 (1) 3.2程序功能 (1) 4.系统设计 (2) 4.1概要设计 (2) 4.2详细设计 (2) 5.测试 (7) 6.结论 (9) 参考文献 (10)

摘要 本次训练主要是考查了对JA V A程序设计的综合运用,设计一个Socket 通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。 本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。 本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JA V A编程的东西,来便于以后可以使用。 关键词:java聊天

1.绪论 对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。 如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。 现在我就用JA V A语言编写一个简单的程序——Java聊天程序。将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。这不仅能锻炼我的实践能力,同时也进一步复习和巩固了我所学的理论知识。对以前没有学好的还有督促和促进作用。而且,根据需要,还可以了解一些课外的知识。增加自己的知识面。 2.开发环境 在开发此聊天程序时,该项目所使用的软件开发环境如下: 操作系统:Windows 7 开发工具:eclipse3.2及其VE插件

聊天室程序设计报告

实验5 掌握简单的网络通讯技术 实验6 掌握基于典型协议的的网络通讯技术 一实验目的 1.熟悉Socket的通讯机制,了解网络程序的设计方法。 2. 熟悉典型协议的通讯机制,掌握基于它们的网络系统设计方法。如TCP、UDP。 二实验环境 1.Windows7 2.Visual C++ 6.0 三实验程序设计 1.实验原理 1.C/S模式 C/S模式是指一个服务器同时为多个客户端服务。并发性是C/S模式的的基础,正是由于并发性的支持,多个客户端能够获得同一种服务,而不必等待服务器完成对上一个请求的处理。 在C/S模式中,当请求到达服务器时,服务器将它交给一个控制线程,它能与已有的线程并发的执行。 在设计并发服务器时,一般服务器代码由两部分组成,第一部分代码负责监听并接收客户端的请求,还负责为客户端请求创建新的服务线程;另一部分代码负责处理单个客户机请求,如与客户机交换数据,提供具体服务。 下图所示为服务器创建多个线程来为多个客户机服务。 2.基于TCP的socket通信 服务器与客户端是通过套接字来进行通信的。 在基于TCP的网络通信程序中,首先服务器端通过socket()函数创建套接字,然后通过bind()函数来命名套接字,调用listen()函数开启服务器端的监听。接着执行accept()函数来接收客户的连接,服务器阻塞等待客户连接请求,直到有客户请求连接。 客户端创建套接字,接着通过connect()函数请求连接服务器,连接成功后,就可以与服务器进行通信了。 服务器与客户机通过send()各recv()调用来进行信息的发送和接收。只有当有信息可接收时,recv()才返回,否则将阻塞。

MFC聊天系统设计报告

客户/服务器模式下的网络聊天系统的设计与实现 摘要: 计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,我们这一次的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。在课程设计中,系统开发平台为Windows7,程序设计设计语言采用Visual C++。 关键字:聊天软件;网络通讯;MFC;课程设计;Visual C++ 第一章引言 近年来,随着全球信息化技术的发展,聊天软件也得到了快速的发展,而且规模越来越大,功能也越来越强。即时聊天软件使人们的沟通突破了时空和级别的界限,使陌生人之间的沟通突破了环境界限,使自我与外界的沟通突破心理界限。聊天软件的广泛应用,已经不仅仅是一种技术工具,它成为了人们交流的一种重要方式,并构建起一种新的社会关系。目前的聊天软件—般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟。本文在VC开发环境下设计和实现了一种聊天软件,可以实现在线用户的即时聊天和文件传输功能。 第二章设计依据及框图 2.1 设计平台 本课程采用Visual C++6.0平台编程。MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。应用程序向导通过创建和继承MFC库的基本类以及派生出的新类生成一个应用软件。MFC类是一组预先定义的C++。应用程序向导通过创建和继承MFC库的基本类以及派生出的新类生成一个应用

聊天室课程设计报告

网络课程设计设计报告 题目:基于TCP SOCKET的JAVA聊天室 院系名称:计算机学院 专业名称:网络工程 班级: 学生姓名: 学号(8位): 指导教师: 设计起止时间:2011年6月20日~2011年7月1日

第一章功能分析 1.1 需求分析 人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。 根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求: (1). 与聊天室成员一起聊天。 (2). 可以与聊天室成员私聊。 (3). 可以改变聊天内容风格。 (4). 用户注册(含头像)、登录。 (5). 服务器监控聊天内容。 (6). 服务器过滤非法内容。 (7). 服务器发送通知。 (8). 服务器踢人。 (9). 保存服务器日志。 (10).保存用户聊天信息。 该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、查看在线用户等。 1.2 软件功能描述 (1)、户设置:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名。 (2)、登录功能:在服务端开启的情况下,用户可以以自己自定义或者默认的登

录名和登录地址端口登录到客户端,并能在服务器端显示登录状态。 (3)、公聊:用户可以与“所有人”聊天,在线用户可正常接收并正确显示公聊消。 (4)、私聊:用在线用户和其他用户聊天。记录对于聊天室的其他用户是不可见的。 (5)、聊天心情:用户在聊天的过程中可以选择相应的心情来表达自己的情感。 (6)、系统消息:服务端运行,为每一个用户都能接收服务器端发送的信息提示信息。 (7)、用户的状态.每一个客户端用户都可以实时看到目前其他在线用户的状态。 (8)、用户剔除:用户可以被系统剔除,并重新登记登录名和地址。 (9)、用户退出:用户可以在正常情况下退出聊天室。 (10)、服务端控制:服务端开启的情况下,用户才能登陆成功和聊天;用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。 第二章主要模块描述及流程图 2. 1 模块介绍 本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类https://www.doczj.com/doc/bd1089430.html,.Socket,服务器采用多线程以满足多用户的请

JAVA课程设计聊天室系统

J A V A课程设计聊天室 系统 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

Java课程设计指导书(学生版初稿) 第二章聊天室系统 目标 背景介绍 2.1.1 业务背景 2.1.2 技术背景 需求分析 2.2.1功能需求分析 2.2.2 业务对象分析 2.2.3 验收测试要求 系统设计 2.3.1 总体设计 2.3.2 详细设计 系统实现 小结 展望

第二章聊天室系统 学习目标: 1、理解基于网络的C/S模式的软件系统结构,掌握网络编程的基本概念。 2、了解Java 的多线程机制,掌握Java多线程技术的应用。 3、熟练掌握基于TCP协议的Socket编程。 4、了解Socket编程的协议约定,掌握简单应用协议的开发。 5、进一步巩固发展团队协作能力。 学习寄语:想必大家都用过QQ,其主要功能就是聊天,是不是很想知道它是如何实现的本项目就是帮你实现一个简单的聊天系统,当然跟商业项目没法比,但从中你却可以了解这些系统是如何实现的,学到开发类似系统的基础知识和基本技能(基本并不意味不实用)。本章的内容有一定难度(多线程、基于TCP的应用协议编程),所以系统的开发采用了“增量迭代”的开发方式,由简易到繁难,希望你能顺利前行。我们的信念依然是:“不抛弃,不放弃”。你的改变和收获依然是老师真诚的期待,期待你更踏实、更自信。Come on!

背景介绍 2.1.1 业务背景 随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ 的及时通讯系统就变得非常有意义了。“Happy Chat”聊天系统应运而生,它较之QQ的唯一好处是自主开发,用的放心,更适合在局域网内使用。它提供的功能远不如QQ丰富,但应具有如下功能:(1)与聊天室成员一起聊天;(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。(8)保存用户聊天信息。 2.1.2 技术背景 本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。系统采用两层C/S体系结构,C端负责通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能; S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。C端和S端是通过网络交互的,其基本原理如图1所示:

JAVA聊天室课程设计报告含源代码压缩文件

J A V A聊天室课程设计报 告含源代码压缩文件 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

南京晓庄学院 《JAVA程序设计》 课程设计报告 题目: 姓名: 学号: 班级: 14软件工程3班 指导教师: 王峥 完成时间 成绩: 信息工程学院 2016年6月

目录 Java聊天室的设计与实现 引言 Java聊天室开发背景 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、MSN,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。 本程序设计简单可以实现在同一局域网的聊天,程序可以自动扫描已经上线的用户,上线用户可在同一聊天界面中实现群聊。如果需要与其中的用户进行交谈,则只需双击右侧用户列表,读取对方IP地址,便可在下面的输入框内输入信息进行发送,实现一对一私聊功能。 1.1Java聊天室开发的目的和意义 目的:(1)理解进程消息通信的概念,如何实现两个创建进程之间的数据传递。 (2)理解进程共享变量的进程通信。 (3)熟悉并掌握java语言的代码编写 (4)熟练使用开发工具Eclipse (5)实现聊天室的一些基本功能 意义:(1)实现局域网中的信息交互,界面尽量人性化且美观,让用户便于接受

(2)用户及时获取自己想要的信息、促进交谈 (3)异常处理,对于用户错误的操作使用程序会有提示消息 (4)前期仅实现其基本雏形,后期可扩性很高,可实现统计在线人数,发送图片,界面美化,用户登陆注册信息的采集,连接到数据库etc. (5)后期可便于网站自身的广告宣传与商品推广 因所学知识和能力的局限性,仅能完成有限范围内的雏形生成与功能实现,后期的功能实现需要进一步的深入学习才能使本课程设计日益完善。 1.2完成的主要工作 (1)需求分析与总体设计、详细设计、代码分析 (2)实现程序所能运行的功能 (3)选择Window系统,并选择该操作系统中一种进程通信的方式。 (4)运用Eclipse开发工具和java语言实现该应用程序。

java实现聊天系统(计算机网络课程设计报告)

计算机网络课程设计报告 学生姓名 学号 班级 指导教师 设计时间

目录 第一章系统描述 设计目的 (3) 系统设计任务 (3) 系统设计分析 (3) 系统功能分析 (4) 第二章功能模块结构 模块划分 (5) 模块结构图 (5) 模块功能 (5) 第三章模块算法实现 服务器实现 (6) 客户端实现 (9) 第四章运行结果 (13) 第五章课程设计总结 (17) 第六章附录 参考文献 (19) 源代码 (19)

第一章系统描述 设计目的 1.学习网络编程的知识,掌握网络编程的方法。 2.进一步掌握编程思想与编程技巧,做到模块化程序设计, 3. 强化语言学习,尤其是Java的图形界面与多线程,需反复练习,熟练掌握。 系统设计任务 聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。 学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。 系统设计分析 一.实现网络聊天室编程,关键在于Socket通信,程序的功能都是在Socket的基础上一层一层增加的。实现Socket通信的基本方法为以下4个步骤。 在客户端与服务器端创建相应的ServerSockot/Socket实例。 打开连接到Socket的输入输出流 利用输入输出流,按照一定的协议(TCP协议)对Socket进行读写操作 关闭输入输出流和Socket 我们要实现的功能都是在第3步对Socket的输入输出流做相应的操作 二.因为是多客户端,所以必须用线程进行控制,不同的处理线程为不同的客户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。 系统功能分析

MFC课程设计报告---聊天室程序设计

MFC课程设计报告 题目聊天室程序设计 学号 专业计算机科学与技术 授课班号 学生姓名 指导教师 完成时间2008.12.30

题目:设计一个聊天室系统,实现多人一起聊天。 一. 引言 1.1开发背景 随着网络信息时代的来临,INTERNET应用越来越广泛,人们越来越习惯于在网上获取和交流信息。据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。使用网上聊天已经成为现代年轻人一种新的交往方式。聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。所以有大部分的人会进入聊天室聊天,它会给人一个完全自由的聊天世界。因此我联系所学的MFC 知识,决定做一个简易的聊天室程序。 1.2开发环境以及运行环境 1.2.1 开发环境 ●Intel? Pentium? 4 2.0GHz,512M内存,80G硬盘 ●Microsoft? Windows? XP Professional ●Microsoft? Visual C++ 6.0 1.2.2 运行环境 ●Intel? Pentium? 2及以上处理器,32M以上内存,4G以上硬盘 ●Microsoft? Windows? XP操作系统 ●800*600或以上的屏幕分辨率 二.需求分析 1、用WINSOCK实现简单的网络聊天; 2、在MFC开发平台上编写一个聊天系统; 3、得server和client之间可以相互通信; 4、多人能够发送信息至服务器,首先显示进入聊天室的成员名, 然后显示对方名字和聊天信息,可以并发执行。

三、算法分析 建立连接过程流程图如下: 四、详细设计 程序个模块代码如下: 1.客户端 (1)通过AppWizard生成基于对话框的应用程序ChatClient,在向导的第二步选择WindowsSockets的支持,其余步骤均用默认值。 (2)增加一个登录服务器的对话框资源,其ID为IDD_SETUP,然后通过ClassWizard生成对应的基于CDialog的类CSetupDlg。

相关主题
文本预览
相关文档 最新文档