基于java的局域网聊天系统-课程设计报告

基于java的局域网聊天系统-课程设计报告
基于java的局域网聊天系统-课程设计报告

摘要

随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。本文利用JA V A的UDP编程以及SWING图形界面编程技术,在WINDOWS平台上实现了具有美观图形界面的局域网聊天软件.

在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。并模仿国内的QQ进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理、实用。

通过本局域网聊天软件可以实现一对一、一对多的聊天,可以实现不同用户不同的文字字体、风格、大小、颜色的发送和显示,提供发送表情、文件、好友间的抖动提示以及聊天记录的管理等功能。

关键词:局域网聊天;JA V A网络编程;UDP;多线程

LAN Chat System Development based on JAVA

Abstract

With the development of computer network technology, various kinds of applications based on network were born, such as the release of information, communication, data sharing based on the Internet and so on. The development of the LAN is also quick. Many government agencies, enterprises, schools, is the first in a unified network linked together, each with access to INTERNET. Thus Instant Communication Tools based on LAN were born. In this paper, by using JA V A UDP programming and SWING graphical interface programming technology, we can get a LAN chat software with beautiful appearance on the WINDOWS platform.

In the implementation, the client and the server were integrated within a program, implemented with multithreading. And imitating the domestic QQ interface humanization design, using more simple and convenient, and the function is very reasonable, practical.

Through our LAN chat software can achieve one to one, one to many chat, send different users’ different text font, style, size, color and display, provide the send of expression, file, the shake among friends and chat records management and other functions.

Keyword: LAN Chat;JA V A network programming;UDP; multi-thread

目录

摘要 ................................................................................................................................................... I Abstract ............................................................................................................................................. I I 第一章前言 (1)

第二章系统可行性分析 (2)

2.1 成本可行性分析 (2)

2.2 技术可行性分析 (2)

第三章需求分析 (3)

3.1 功能需求分析 (3)

3.2性能需求分析 (3)

3.3 系统主要技术分析 (3)

3.2.1 JAVA DatagramSocket (3)

3.2.2 JAVA MulticastSocket (4)

3.2.3 JAVA Swing (5)

3.4 系统开发、运行环境分析 (5)

第四章系统概要设计 (6)

4.1 系统功能模块设计 (6)

4.2 系统数据流图 (9)

第五章系统详细设计 (10)

5.1 详细设计概述 (10)

5.2 系统详细设计 (10)

5.2.1登陆界面 (10)

5.2.2用户主界面 (14)

5.2.3聊天界面 (16)

5.2.4辅助工具类 (19)

第六章系统实现 (21)

6.1 总体工程架构的实现 (21)

6.2 具体功能实现 (21)

结论 (24)

参考文献 (25)

第一章前言

第一章前言

近年来,随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。

为了解决上述矛盾,人们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。

我在本文中将讨论一种基于DatagramSocket和MulticastSocket的局域网通信工具的设计与实现方法。基于DatagramSocket和MulticastSocket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于DatagramSocket和MulticastSocket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了DatagramSocket和MulticastSocket 通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。

基于DatagramSocket和MulticastSocket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

第二章系统可行性分析

第二章系统可行性分析

可行性分析是基于客观的、科学的,其在整个系统的设计与实现过程中有非常重要的意义,软件可行性分析的目的是用合适的代价解决足够的问题,其最终结果是对所设想的项目做出实施还是放弃。本局域网聊天系统将从成本和技术可行性进行分析。

2.1 成本可行性分析

因为本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。2.2 技术可行性分析

首先我已经搭建好开发所需要的软硬件平台,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与VC 开发环境的严密契合能力,加之相类似的更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发可行性在技术上是完全可行的。

第三章需求分析

3.1 功能需求分析

(1)用户端之间的信息发送,本程序需要实现的最基本的功能;

(2)当有用户下线后,应在所有在线的用户的“在线用户列表”中消掉下线人的信息记录;

(3)在聊天是还应提供一些使用的辅助功能,在本局域网的聊天软件中,提供有字体设置、表情发送、文件发送、窗口抖动、消息记录管理等常用功能,能够满足用户的基本要求。

3.2性能需求分析

首先要求程序要完全可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。

程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。

要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。

3.3 系统主要技术分析

3.2.1 JAVA DatagramSocket

1.基本概念:

a.DatagramPacket与DatagramSocket位于https://www.360docs.net/doc/322677274.html,包中

b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字

c.由这两个类所有构成的网络链接是基于UDP协议,是一种不可靠的协议。注:为了解决UDP协议的不可靠问题,在软件的聊天的文件传输功能部分自定义了一套接收数据的规则,使得通过UDP协议传输文件不会出错。

2.使用方法:

DatagramSocket():创建实例。通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。

DatagramSocket(int port):创建实例,并固定监听Port端口的报文。DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr

的报文

receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。send(DatagramPacket d):发送报文d到目的地。

setSoTimeout(int timeout):设置超时时间,单位为毫秒。

close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Sock。

3.2.2 JAVA MulticastSocket

多播数据报套接字类用于发送和接收IP 多播包。MulticastSocket 是一种(UDP) DatagramSocket,它具有加入Internet 上其他多播主机的“组”的附加功能。

多播组通过 D 类IP 地址和标准UDP 端口号指定。D 类IP 地址在 224.0.0.0 和 239.255.255.255 的范围内(包括两者)。地址224.0.0.0 被保留,不应使用。

可以通过首先使用所需端口创建MulticastSocket,然后调用 joinGroup(InetAddress groupAddr) 方法来加入多播组。将消息发送到多播组时,该主机和端口的所有预定接收者都将接收到消息(在数据包的生存时间范围内,请参阅下文)。套接字不必成为多播组的成员即可向其发送消息。

当套接字预定多播组/端口时,它将接收由该组/端口的其他主机发送的数据报,像该组和端口的所有其他成员一样。套接字通过leaveGroup(InetAddress addr) 方法放弃组中的成员资格。多个MulticastSocket 可以同时预定多播组和端口,并且都会接收到组数据报。

同时,不允许applet 使用多播套接字。

3.2.3 JAVA Swing

Swing是一组Java程序元件,它能够创建图象用户接口(GUI)元件,如按钮和滚动条,它们独立于特定操作系统的开窗口系统。Swing元件使用Java Foundation Classes(JFC)。

互联网基础类(IFC) 是网景公司最初为Java开发的图形库,第一次发布于1996年12月16日。

在1997年4月2日,太阳微系统公司和网景公司宣称他们要将IFC和其他技术合并形成Java基础类。作为IFC最初提供组件的附加品,Swing引进了一个机理:在不改变大量的程序代码前提下允许程序中每个组件观感的变化。支持可更换观感技术的引入允许Swing组件在模拟原生组件外观的同时又保持了平台独立的优点。

Swing 是一个为Java设计的GUI工具包。Swing 是 JA V A API 的一部分。Swing 包括了图形用户界面(GUI) 器件如:文本框,按钮,分隔窗格和表。

SWING 提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的观感和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JA V A支持的任意观感。轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

3.4 系统开发、运行环境分析

操作系统:Microsoft Windows 7

JDK:jdk1.8.0_20-windows

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。

开发工具:Eclipse 4.4.0 或更高版本

Eclipse企业级工作平台(Eclipse Java EE IDE for Web Developers,简称Eclipse),利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、JSF、CSS、Javascript、SQL、Hibernate。

第四章系统概要设计

4.1 系统功能模块设计

从模拟用户的角度进行分析,对于一个局域网聊天系统,首先要确定其功能是什么,也就是用户想要系统做什么工作。经过对系统的可行性分析、需求分析、技术分析后,结合调研的情况及用户的使用需求,确定了本系统的功能模块如下图所示。

图4.1 系统功能模块图

功能模块介绍:

1.用户登陆

用户登陆时使用,提供昵称的输入和用户头像的选择等功能。用户登陆界面共分为五部分如下图所示:

①提示信息显示区域

②输入用户昵称区域

③选择头像的列表

④头像展示区

⑤登入退出按钮

图4.2 登陆界面

2.用户主界面

用户主界面是显示所有在线用户的界面,界面分为三块:

①显示本客户端的登入用户的头像和昵称

②自己制作的最小化和关闭的图标,为了符合程序风格,去掉了windows的原有框架,进行了适当的美化

③实时显示局域网聊天的在线用户列表,每一项都会显示一个在线用户的头像和昵称

④滚动显示当前的在线用户数目,当在线用户较多时,可以让用户直观地看到在线的人数

图4.3 用户主界面

3.聊天界面

聊天界面是用户之间聊天使用的界面,界面共分为六部分:

①显示对象的头像和昵称

②显示聊天记录

③聊天辅助功能栏,从左到右依次为:文字属性、表情、窗口抖动、文件发送和聊天记录管理

④用户输入聊天信息

⑤发送按钮和清屏按钮,清屏按钮用于清除聊天界面的聊天信息

⑥显示对方的放大头像和登陆信息

图4.4 聊天界面4.2 系统数据流图

图4.5 系统数据流图

第五章系统详细设计

5.1 详细设计概述

软件详细设计的任务是,是为软件结构图中的每个模块确定所采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述,表达工具可以自由选择,但工具必须具有描述过程细节的能力,而且能够有利于程序员在编程时便于直接翻译成程序设计语言的源程序。

程序流程图、UML图等都是完成详细设计的工具,选择合适的工具并且正确地使用是十分重要的。

在概要设计阶段,已经确定了软件系统的总体结构,给出了软件系统中各个组成模块的功能和模块间的接口。作为软件设计的第二步,软件详细设计就是在软件概要设计的基础上,考虑如何实现定义的软件系统,直到对系统中的每个模块给出了足够详细的过程描述。在软件详细设计以后,程序员将仍旧根据详细设计的过程编写出实际的程序代码。因此,软件详细设计的结果基本上决定了最终的程序代码质量。

5.2 系统详细设计

5.2.1登陆界面

登陆局域网聊天程序共涉及到三个类:LanTalk类、LoginFrame类、和ComUtil 类。

LanTalk类是程序的主程序;

LoginFrame类是程序的登陆界面程序;

ComUtil类是程序的通信类,当用户登陆后,ComUtil类会实例化一个MulticastSocket和一个DatagramSocket,前者用于向固定广播地址发送自己的在线信息和实现在线用户之间的群聊功能,后者用于提供两个用户之间的私聊功能。

登陆局域网聊天软件时需要运行的是LanTalk类,LanTalk类会实例化LoginFrame类初始化登陆界面,而当登陆信息填完确定登陆后,LoginFrame又会初始化ComUtil类提供通信功能,三者的关系和UML图如下所示:

(注:由于受图像大小限制,UML图并没有画出监听器的类图)

图5.1 登陆界面UML图

登陆界面核心代码:

ComUtil的广播在线信息主代码public void broadCast(String msg)

{

try

{

//将msg字符串转换字节数组

byte[] buff = msg.getBytes();

//设置发送用的DatagramPacket里的字节数据

outPacket.setData(buff);

//发送数据报

singleSocket.send(outPacket);

}

//捕捉异常

catch (IOException ex)

{

ex.printStackTrace();

if (socket != null)

{

//关闭该Socket对象

socket.close();

}

JOptionPane.showMessageDialog(null,

"发送信息异常,请确认30000端口空闲,且网络连接正常!"

, "网络异常", JOptionPane.ERROR_MESSAGE);

System.exit(1);

}

}

//持续读取MulticastSocket的线程

class ReadBroad extends Thread

{

public void run()

{

while (true)

{

try

{

//读取Socket中的数据,读到的数据放在inPacket所封装的字节数组里。

socket.receive(inPacket);

//打印输出从socket中读取的内容

String msg= new String(inBuff, 0 , inPacket.getLength());

//读到的内容是在线信息

if (msg.startsWith(MyProtocol.PRESENCE)

&& msg.endsWith(MyProtocol.PRESENCE))

{

String userMsg = msg.substring(2 , msg.length() - 2);

String[] userInfo =

userMsg.split(MyProtocol.SPLITTER);

UserInfo user= new UserInfo(userInfo[1] , userInfo[0] , userInfo[2],

inPacket.getSocketAddress(), 0);

//控制是否需要添加该用户的旗标

boolean addFlag = true;

ArrayList delList= new ArrayList();

//遍历系统中已有的所有用户,该循环必须循环完成

for (int i = 1 ; i < lanTalk.getUserNum() ; i++ )

{

UserInfo current = lanTalk.getUser(i);

//将所有用户失去联系的次数加1

current.setLost(current.getLost() + 1);

//如果该信息由指定用户发送过来

if(current.getAddress() == null

&&

current.getName().equals(user.getName())

&&

current.getloginTime().equals(user.getloginTime()))

{

current.setAddress(user.getAddress());

current.setLost(0);

addFlag = false;

}

else if (current.equals(user))

{

current.setLost(0);

//设置该用户无需添加

addFlag = false;

}

if (current.getLost() > lanTalk.getUserNum() * 2)

{

delList.add(i);

}

}

//删除delList中的所有索引对应的用户

for (int i = 0; i < delList.size() ; i++)

{

lanTalk.removeUser(delList.get(i));

}

if (addFlag)

{

//添加新用户

lanTalk.addUser(user);

}

}

//读到的内容是公聊信息

else

{

//处理读到的信息

try {

lanTalk.processMsg(inPacket , false);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

//捕捉异常

catch (IOException ex)

{

ex.printStackTrace();

if (socket != null)

{

//关闭该Socket对象

socket.close();

}

JOptionPane.showMessageDialog(null,

"接收信息异常,请确认30000端口空闲,且网络连接正常!"

, "网络异常", JOptionPane.ERROR_MESSAGE);

System.exit(1);

}

}

}

}

}

5.2.2用户主界面

用户主界面包含三个类,LanTalk类用于显示主界面在线用户列表,UserInfo 类是封装用户信息的类,ShowOnline类是用于显示在线用户人数的类。

三者的关系和UML图如下:

图5.2 用户主界面UML图

用户主界面核心代码:

显示在线人数

public ShowOnline(LanTalk lanTalk)

{

https://www.360docs.net/doc/322677274.html,nTalk = lanTalk;

this.x = 0;

this.changepx = 1;

timer = new Timer(200,

new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

update();

}

});

timer.start();

}

public void update()

{

repaint();

}

public void paintComponent(Graphics g)

{

super.paintComponent(g);

g.setColor(color);

g.setFont(new Font("华文新魏" , Font.BOLD , 15));

msg = "当前有 " + (lanTalk.getUserNum() - 1) + " 人在线";

FontMetrics fm = g.getFontMetrics();

int stringwidth = fm.stringWidth(msg);

int stringascent = fm.getAscent();

if(changepx == 1 && x + changepx + stringwidth > getWidth()) {

changepx = -1;

x += changepx;

}

else

x += changepx;

if(changepx == -1 && x + changepx < 0)

{

changepx = 1;

x += changepx;

}

else

x += changepx;

g.drawString(msg, x, getHeight() - stringascent / 2);

}

5.2.3聊天界面

聊天界面包含六个类:ChatFrame类、FontJWindow类、PicsJWindow类RecordJWindow类、FileReceiveJPanel类和FileSendJPanel类。

ChatFrame类是构建聊天界面主框架的类,FontJWindow类是用于设置字体格式的类,PicsJWindow类是用于显示表情的类,RecordJWindow类是用于记录用户聊天信息的类,FileReceiveJPanel类和FileSendJPanel类是用于文件发送和接收的类。

(注:由于受图像大小限制,UML图并没有画出监听器的类图)

图5.3 聊天界面UML图1

图5.4 聊天界面UML图2

聊天界面核心代码:

字体设置关键代码

class FontListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == jcbFontName)

{

String fontName = (String)jcbFontName.getSelectedItem();

String[] userFont =

(owner.getSelf().getFont()).split(MyProtocol.FONT);

Font newFont = new Font(fontName,

Integer.parseInt(userFont[1]), Integer.parseInt(userFont[2]));

owner.getSelf().setFont(newFont);

owner.getInputPane().setFont(newFont);

}

else if(e.getSource() == jcbFontSize)

{

int fontSize = (Integer)jcbFontSize.getSelectedItem();

String[] userFont =

(owner.getSelf().getFont()).split(MyProtocol.FONT);

Font newFont = new Font(userFont[0],

Integer.parseInt(userFont[1]), fontSize);

owner.getSelf().setFont(newFont);

owner.getInputPane().setFont(newFont);

}

else if(e.getSource() == jbBold)

{

String[] userFont =

(owner.getSelf().getFont()).split(MyProtocol.FONT);

Font newFont = null;

if(jbBold.getIcon().toString().equals("src/font_image/bold_normal.png") )

{

newFont = new Font(userFont[0], Font.BOLD,

Integer.parseInt(userFont[2]));

jbBold.setIcon(new

ImageIcon("src/font_image/bold_down.png"));

jbItalic.setIcon(new

ImageIcon("src/font_image/italic_normal.png"));

jbPlain.setIcon(new

ImageIcon("src/font_image/plain_normal.png"));

局域网内的多功能聊天室的设计与实现

JISHOU UNIVERSITY 专业课课程论文题目:局域网内的多功能聊天室的设计与实现 作者: 学号: 所属学院:信息科学与工程学院 专业年级: 总评分: 完成时间: 吉首大学信息科学与工程学院

局域网内的多功能聊天室的设计与实现 局域网内的多功能聊天室的设计与实现 (吉首大学信息科学与工程学院,湖南吉首 416000) 摘要 在计算机技术飞速发展的今天,随着Internet的普及和发展,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见、最直接的网上交流的方式。本论文主要研究一个以网络交友为主,为广大用户提供一个借助网络进行人际交往的信息平台。 本文所设计的局域网聊天系统是基于开放的WEB服务器应用程序开发设计的,其主要特征是能动态完成信息的传递且具有高效的交互性,有效的处理客户请求且具有更简单、更方便的数据库访问方法,易于维护和更新。这种技术程序由JAVA、HTML、数据库和脚本语言组合而成。主要功能模块包括:用户登录、注册部分;编写和显示聊天记录部分;管理员管理聊天室的管理部分。聊天系统编写和显示聊天记录部分界面友好,提供动作、表情、公聊或私聊等操作;管理部分可以删除不守规矩的注册用户、踢出在线用户以及删除某些不合时宜的聊天记录等、根据数据库需求分析,在ACCESS中定义3个表:用user表来存放注册用户信息、用activetable 表来存放当前在线用户信息以及用message表来存放聊天记录。本系统相比较其他信息交流平台具有开发方便、快捷,占用资源少,维护方便等优点。 【关键词】Java,数据库,脚本语言,聊天系

LAN of multi-function chat room design and Implementation Raotao (College of Information Science and Engineering,Jishou University,Jishou,Hunan 416000) Abstract The rapid development of computer technology today, with the popularity and development of Internet, people's work and life has become increasingly inseparable from the support of the information network, and the chat room is one of the most common, the most direct online communication mode.In this thesis, a network of friends, for the vast number of users with a network of have the aid of interpersonal information platform. The design of the LAN chat system is based on an open WEB server application development and design, its main characteristic is to complete the information transmission dynamically with high interactivity, effective customer request and has a more simple, more convenient database accessing method, easy maintenance and update.The technical program by JAVA, HTML, database and script language and combination.The main function modules include: user login, registration section; write and display chat recording part; the administrator manage the chat room management section.Chat system to prepare and display chat interface friendly, with action, expression, the public chat or operation; management can remove the unruly registered user, play online user and delete certain be inopportune or inappropriate chat records, according to the database needs analysis, defined in ACCESS 3: user table table for registered users of information, using activetable table to store the current online user information and the use of message table to store the chat record.This system is compared with other information exchange platform with the development of convenient, fast, less resource occupation, easy maintenance and other advantages. Key words:JA V A; data capture; information analysis ; Winpcap;Jpcap

java课程设计报告书

《Java程序设计》课程设计报告2015—2016学年第二学期 设计题目:《数字连连看》 学生:黄杰 学号: 2 专业班级:软件工程1402 指导教师:国权 2016 年7 月2 日

目录 1.JAVA程序设计书 3 1.1《简易连连看》 3 1.1.1具体要求 3 1.2本系统设计的知识点 3 2.功能设计 3 2.1算法设计 3 2.2部分模块流程图 4 3.代码设计 5 4.界面及运行效果,测试工具与测试效果14 5.设计总结 16 5.1.程序调试情况:16 5.2.本人在程序设计中感想: 16 6.致 16 主要参考文献16

: 1.1Java程序课程设计任务书 1.1《简易连连看游戏》 本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。 1.1.1具体要求(包括技术要求等): <1>. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两相同,位置随机打乱。 <2>. 当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。 <3>. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 <4>. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。 1.2本系统涉及的知识点: 循环,javaGUI组件,函数,数组,分支等 2.功能设计 2.1算法设计 本系统需要实现的功能要求: 图一,数字按钮功能模块 图二,三个功能按钮模块

TCPIP 网络聊天课程设计

《TCP/IP和网络编程》课程设计 题目:网上聊天 姓名 学号 指导教师 二零一零年月日

一、系统功能描述 使用Socket实现网上聊天功能。用户可以通过客户端连接到服务器端并进行网上聊天。当然,聊天时可以启动多个客户端。服务器支持多个主题,进入服务器后可选定主题,启动客户端后,输入服务器的IP地址即可。用户聊天必须处于同一个主题中。 二、系统的模块划分 服务器端: CAboutDlg:生成关于的对话框类 CCChatServerApp:对应用程序进行初始化 CCChatServerDoc、CCChatServerView:一份文档可以有多个相关的视图,当用户在文档上打开一个窗口时,框架创建一个视图并将其与文档连接。 CClientSocket:设置非阻塞,将前台的界面处理和后台的网络通信都整合到消息传递模型。获取输入的用户名,聊天室列表。 CINIFILE:可以读取.修改变量数值,可以设置新的组,新的变量 CMainFrame:创建应用程序主窗口,使之以树菜单保持展开状态 CMyFormView:在程序中应用窗体,可将新窗体插入。 CMyTreeView:将聊天室列表以树形排列,并实现用户发送消息的方法。 CParseMessage:实现信息的传输。 CServerSocket:实现多个客户端的登录。 CSetServerPortDlg:设定连接的端口。 Message:建立一个结构体,设定房间名、用户名、以及发送内容的类型和长度。 客户端: CChatClientApp:实现客户端与服务器端的连接。 ChatClientDoc:从服务器端获取聊天室内房间的名称的文本。 CClientFormView:初始化房间的名称。 CClientLog:显示上次登录的用户名的对话框。 CConnectServerDlg:客户端与服务器端的连接的对话框。 CIniFile:读取当前目录下的ini文件。 CShowMessage:显示其他客户端发送的消息。 CParseMessage:用户登录时的所选择登陆端口,IP,用户名的对话框。 CMyTreeView:客户端上显示的树形列表,以及可实现发送消息头像闪动等。三、调试数据 首先启动服务器端

Java课程设计报告模板

Java课程设计报告 模板

浙江科技学院 《Java程序设计》课程设计报告 设计题目:学生信息管理系统 姓名:邱焕明 学号: 所属院系:信息学院 专业:软件工程 小组成员:邱焕明 设计时间: -1-6 指导教师:虞建东

一、课程设计目的 (1)实验目的:结合开发的系统,给出学生信息管理系统 二、课程设计完成的任务 三、设计过程 (一)需求分析 1、基础资料管理 基础资料管理包括对院系、班级和学期的设置。该模块可实现以下功能: 添加、修改、删除和显示院系代码、院系名称和电话号码。 添加、修改、删除和显示班级代码、班级名称、学生人数和所属院系名。 添加、修改、删除和显示学期代码、学期名称。 2、学生信息管理 学生信息管理包括对学生档案和学籍的管理。该模块可实现以下功能: 添加、修改、查询和显示学生的基本信息、所属班级和院系。 记录学生学籍、学生离校信息和学生调动信息。 3、课程信息管理 课程信息管理包括对课程设置和班级选课的管理。该模块可实

现以下功能: 添加、修改、删除和显示课程代码、课程名称、学分和院系名称。 添加、删除和提交班级所选课程。 4、成绩信息管理 成绩信息管理包括对成绩录入和成绩分析的管理。该模块可实现以下功能: 录入班级课程成绩,以不同形式(列表统计、图表分析)显示班级课程成绩。 (二)系统设计概念、流程初定义 1、实体名:院系 2、实体名:班级 3、实体名:学生 4、实体名:课程 (三)系统内容规划 1、班级信息表 表3-1 班级信息表 2、课程信息表 表3-2 课程信息表

(四)系统总体设计 内 (五)系统详细设计 (六)系统测试 列名 数据类型 长度 备注 课程代码 char 10 主键 课程名称 varchar 50 无 学 分 tinyint 1 无 所属院系 varchar 50 无

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)

网络编程聊天程序课程设计

课题名称:TCP/IP协议及网络编程技术课程设计子课题:实现简化功能的客户机和服务器聊天程序 院(系):计算机学院 专业:通信工程 班级: 学生姓名:hshengxue 学号:200900402022 指导教师:周坚和 2012年 6 月22 日

目录 摘要 (3) 引言 (3) 一、课程设计的目的和意义 (3) 二、课程设计的内容和要求 (3) 三、课程设计所需了解的相关内容和技术 (4) (一)、套接口 (4) (1)套接口的概念 (4) (2)套接口的分类 (5) (3) Socket工作模式 (6) (二)、所用的关键技术 (6) (三)Winsock API的使用 (7) 四、课程设计过程 (7) (一)设计思路 (7) (1)服务器的主要工作流程 (7) (2)客户机的工作流程.............................................8. (3)服务器的工作流程 (8) 五、编程实现 (9) (一)服务器端的实现 (9) (二)客户端的实现 (11) 六、小结 (15) 七、参考文献 (16)

摘要: 网络应用程序是通过网络使用通信协议实现进程间的通信;本项目采用软件工程的方法,综合运用网络程序设计,以visual c++6.0作为系统前台应用程序开发工具。此局域网聊天工具采用客户端/服务端(C/S)模式和UDP连接。它由两个程序组成:服务器(Server)和客户端(Client),首先需要登录服务器,再登录客户端,需要指定服务器IP地址以便与服务器建立连接。登录后,客户可以在自己的界面上与另一指的定的客户端进行聊天。服务器模块主要用来维护网络用户用户的信息,包括用户IP地址,聊天内容;聊天客户端模块主要包括用户连接,发送信息,接收信息。是一套用于Internet网络使用的网络聊天工具,其操作简单,灵活性好,运用也比较稳定。 关键词:网络,聊天程序,客户端/服务端,UDP传输控制协议。 0、引言 网络应用程序是通过网络使用通信协议实现进程间的通信,UDP 是TCP/IP协议族为传输层设计的两个协议之一,UDP提供的是无连接、不可靠的网络传输协议,在进行网络应用程序设计时,TCP/IP 协议的核心内容被封装在操作系统中。网络应用程序要使用UDP协议来实现自己的功能,只能通过由系统提供给用户的UDP协议编程接口来实现。因此,可以说设计网络应用程序就是利用网络编程接口(API)进行程序设计的过程。在Windows环境下的网络应用程序编程接口叫

Java课程设计报告

湖北大学 本科课程设计 题目 ATM 自助机模拟程序姓名 学号 专业年级 指导教师 职称

目录 第一章系统描述 (2) 1 前言 (2) 2 系统功能需求 (2) 第二章系统分析与设计 (3) 1 功能模块划分 (3) 2 功能模块的描述 (3) 3 系统设计流程图 (4) 4 测试数据及期望结果 (6) 第三章系统详细设计 (7) 1 主界面开发设计 (7) 2 功能选择界面开发设计 (7) 3 取款界面开发设计 (7) 4 存款界面开发设计 (8) 5 转账界面开发设计 (8) 6 查询界面开发设计 (9) 7 修改密码界面开发设计 (9) 8 界面开发设计使用函数 (9) 第四章系统测试 (11) 第五章源程序部分清单 (21) 第六章实验心得 (30) 参考文献 (31)

第一章系统描述 1 前言 Java技术是一门简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,它也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java编程语言与众不同之处在于:Java程序既是编译型的,又是解释型的。 Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本课程设计采用Eclipse作为开发工具,并采用Window Builder下的SWT Designer来实现相应的功能。着重通过模拟实现当前非常快捷又使用的ATM机来加深对java开发设计的了解,从而进一步提高自己对java图像界面的设计及相关知识的认识。 2 系统功能需求 当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM 柜员机系统,用户可以按照以下规则进行: (1)查询余额:初始余额为10000元。 (2)ATM取款:每次取款金额为100的倍数,一次取款不能超过1000,总额不 超过5000元,支取金额不允许透支,有快捷取款和用户自定义取款。 (3)ATM存款:每次存款金额为100的倍数,一次存款不能超过1000,不能出 现负存款。 (4)ATM转账:只有在两次输入账号相同且输入转账金额正确的情况下才允许 转账,不允许透支。 (5)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只 有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

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课程设计报告书

《Java程序设计》课程设计报告 2015—2016学年第二学期 设计题目:《数字连连看》 学生:黄杰 学号: 2 专业班级:软件工程1402 指导教师:国权 2016 年 7 月 2 日 目录 1.JAVA程序设计书 3 1.1《简易连连看》3 1.1.1具体要求 3 1.2本系统设计的知识点 3

2.功能设计 3 2.1算法设计 3 2.2部分模块流程图 4 3.代码设计 5 4.界面及运行效果,测试工具与测试效果14 5.设计总结 16 5.1.程序调试情况:16 5.2.本人在程序设计中感想: 16 6.致 16 主要参考文献16

: 1.1Java程序课程设计任务书 1.1《简易连连看游戏》 本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。 1.1.1具体要求(包括技术要求等): <1>. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两相同,位置随机打乱。 <2>. 当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。 <3>. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 <4>. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。 1.2本系统涉及的知识点: 循环,javaGUI组件,函数,数组,分支等 2.功能设计 2.1算法设计 本系统需要实现的功能要求: 图一,数字按钮功能模块 图二,三个功能按钮模块

JAVA课程设计--简单的网络聊天程序

本科课程设计课程设计题目:简单的网络聊天程序

课程设计报告1.设计目的:

序言 1.1 背景 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 1.2 相关技术 CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 操作系统:Windows7 运行环境:eclips

2. 程序设计与实现 2.1需求分析 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)启动客户端:实现网络的链接,可以进行正式的聊天 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。

Java课程设计报告书

华东交通大学理工学院课程设计报告书( 2010-- 2011年度第 2 学期) 所属课程名称 Java面向对象程序设计题目设计一个多功能计算器分院电信分院 专业班级 09信管<1>班 学号 20090210450106 蔡炜指导教师黄建华 2011年06月23日

华东交通大学理工学院 课程设计(论文)任务书专业09信管班级 <1>班姓名蔡炜 一、课程设计(论文)题目设计一个多功能计算器 二、课程设计(论文)工作:自 2011 年06 月 13日起至2011年 06 月 23日止。 三、课程设计(论文)的内容要求: 本应用程序继承自框架类(JFrame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。包含各种按钮的面板Panel p 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Button b=new Button(); b.addActionListener(事件监听器); 事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、清零按钮事件(“C”)。

在事件处理触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 计算器完成的是一个数学表达式,如:3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。 学生签名: ( ) 2011 年06 月 23 日 课程设计(论文)评阅意见 评阅人职称 20 年月日

网络编程_基于TCP的简易聊天室_实验报告

网络编程 课程设计说明书 题目名称:基于TCP/IP的网络文字聊天程序设计专业:网络工程

班级: 1201班 学号: 1220140105 姓名:蒋星 指导老师:利平 完成日期: 2014年12月13日

目录 一、实验基本信息概要3 1. 题目要求 3 2. 题目容3 3. 开发环境 3 二、流程图4 三、系统简介5 1.界面5 2. 软件功能 5 3. 系统设计 9 4. 优点与缺点9 四、系统详细设计11 1. ChatServer类11 2. ChatClient 类13 3. SocketException类15 5. 命令协议 15 6. 消息格式 16 五、系统测试16 1. 服务器使用错误16 2. 客户端使用错误17 3. 启动服务器17 4. 启动客户端17 5. 关闭客户端17 6. 启动服务器错误提示18 7. 公开聊天 18 8. 私聊 18 9. 错误的私聊19 10. 更名20 11. 帮助20 12. 非法指令20 13. 非法的指令参数20 14. 连接服务器失败21 六、心得体会21 七、完整代码21 Charserverd.cpp 服务器main函数文件 21 ChatServer.h 服务器类头文件 22 ChatServer.cpp 服务器类 23 ClientInfo.h 客户信息类 33 Charclientd.cpp 客户端main函数 34 ChatClient.h 客户端头文件34 ChatClient.cpp 客户端类 35 InitSock.cpp 初始化WINSOCK类41

SockException.h 异常类41八、[参考文献] 42

网络聊天室的实现计算机操作系统课程设计

实验报告 | | 实验名称网络聊天室的实现 课程名称计算机操作系统 | | 目录 【1】设计原理———————————————————————4 【2】程序流程图——————————————————————9 【3】设计步骤———————————————————————10 【4】使用方法说明—————————————————————21 【5】实验结果及分析————————————————————24 设计原理 计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。 此程序主要分为两部分:服务器端和客户端。服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。在服务器端的成员列表栏中会显示在线的所有人名单,有人退出聊天室,成员列表会自动除名。服务器端同时也提供了成员之间的私聊功能,此时服务器端作为一个转发站,进行消息的转发。整个程序的主体使用了CSocket 类的方法,实现了网络通讯聊天。 整个程序设计为两个部分:服务器(ChatServer)和客户端(Chat)

多人聊天的关键在于要将每个客户端发送过来的消息分发给所有其他客户端,为了解决这个问题,在服务器程序中建立一个套接口链表,用来保存所有与客户端建立了连接的服务端口。下面描述了多人聊天的实现原理: 当客户端Client N向对应的服务端口N发送了消息Message,服务端口N将Message 复制给所有套接口列表(USERLIST)中的套接口缓冲区,然后向每个服务端口发送WRITE 消息,使每个服务端口将Message发送给对应的客户端。这样,所有客户端就都获得了Message消息,实现了多人聊天功能。 BOOL CClientSocketList::Sends(char *buff,int n) {CClientSocket *curr=Head; while (curr) {curr->Send(buff,n); curr=curr->Next;} return true;} USERLIST表时多人聊天程序的核心,它是一个动态变化的链表,为空表示没有客户端建立了连接,不为空时每个元素就代表有一个客户端与服务器建立了连接。 以下程序是私聊功能的实现: BOOL CClientSocketList::OnlySend(char *buff,int n,int who) { CClientSocket *curr=Head; while (curr && who>0) {curr=curr->Next; who--;} curr->Send(buff,n); return true;} 以下是此程序的效果截图:

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通讯基本原理图

网络编程 基于TCP的简易聊天室 实验报告

网络编程课程设计 -基于TCP的简易聊天室 一、实验基本信息概要 1.题目要求 熟悉异步网络编程的基本方法,掌握异步网络编程和网络协议设计的方法。要求采用select 模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成编程任务。 2.上机要求 要求采用select模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成下面的任务。 3.题目内容 内容概要:实现一个聊天室,支持多人聊天。也可以增加私聊等功能。 4.开发环境 操作系统:Windows 7 开发语言:C++ 集成开发环境:Microsoft Visual Studio 2010

二、系统简介 1.界面 本软件使用DOS控制台界面,界面风格较为朴素,没用使用复杂的颜色。但是对聊天时界面进行了一定的控制和修正使得界面较为美观,易读。 服务器: 客户端: 2.软件功能 本软件实现了聊天室基本的功能,包括公开聊天,私聊,获取在线用户,更改昵称,获得帮助等。

1)公开聊天 在光标处直接输入消息后按回车即为发送公开聊天,如下图所示。 2)私聊 使用命令【/m 对方UID 消息】即可发送私聊,私聊只有对方可以看到,如下图所示:客户端1,密聊UID为132的用户。 发送后 客户端2,UID为132的用户收到私聊消息。

3)获取在线用户列表 使用命令【/list】即可获得在线用户列表,用户列表会议系统消息的方式返回,如下图所示。命令 发送后 4)更改昵称 使用命令【/name 你的新昵称】即可立即更改昵称,成功修改后服务器会以系统消息的方式返回成功修改的提示。 命令

基于java的局域网聊天系统-课程设计报告

摘要 随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。本文利用JA V A的UDP编程以及SWING图形界面编程技术,在WINDOWS平台上实现了具有美观图形界面的局域网聊天软件. 在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。并模仿国内的QQ进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理、实用。 通过本局域网聊天软件可以实现一对一、一对多的聊天,可以实现不同用户不同的文字字体、风格、大小、颜色的发送和显示,提供发送表情、文件、好友间的抖动提示以及聊天记录的管理等功能。 关键词:局域网聊天;JA V A网络编程;UDP;多线程

LAN Chat System Development based on JAVA Abstract With the development of computer network technology, various kinds of applications based on network were born, such as the release of information, communication, data sharing based on the Internet and so on. The development of the LAN is also quick. Many government agencies, enterprises, schools, is the first in a unified network linked together, each with access to INTERNET. Thus Instant Communication Tools based on LAN were born. In this paper, by using JA V A UDP programming and SWING graphical interface programming technology, we can get a LAN chat software with beautiful appearance on the WINDOWS platform. In the implementation, the client and the server were integrated within a program, implemented with multithreading. And imitating the domestic QQ interface humanization design, using more simple and convenient, and the function is very reasonable, practical. Through our LAN chat software can achieve one to one, one to many chat, send different users’ different text font, style, size, color and display, provide the send of expression, file, the shake among friends and chat records management and other functions. Keyword: LAN Chat;JA V A network programming;UDP; multi-thread

相关文档
最新文档