网络编程论文(网络聊天室JAVA版)
仲恺农业工程学院
网络编程程序设计
报告
网络聊天室
课程名称 网络编程
姓 名 张宝鑫
院,系, 信息科学与技术学院 专业
班级
班级管理量化考核细则初中班级管理量化细则班级心理健康教育计划班级建设班级德育计划
网络工程113班
学 号 201110224328 任课教师 蒋明亮
完成日期 2013年12月31日
目 录
1.需求分析 ................................................................ 1
1.1本课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
的来源 ....................................................... 1
1.2可行性分析 ......................................................... 1
1.3功能要求 ........................................................... 1
1.4本系统涉及的知识点 ................................................. 2
1.5系统运行需求 ....................................................... 2 2 程序总框图和功能模块说明 ............................................... 2
2.1 程序总框图 ........................................................ 2
2.2 功能模块说明 ...................................................... 3
2.2.1客户端结构 .................................................... 3 3. 系统设计 ............................................................... 4
3.1主要类设计 ......................................................... 4
3.2关键函数流程图 ..................................................... 4
3.2.1系统总体流程图 ................................................ 4
3.2.2系统客户端流程图 .............................................. 5 4. 系统调试 ............................................................... 6
4.1客户端 ............................................................. 6
4.2服务器端 ........................................................... 7 5.总结 .................................................................... 7 6. 源程序清单 ............................................................. 8 7成绩评定
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
.............................................................. 29
1.需求分析
1.1本课题的来源
随着网络普及和上网人数的大增,在国内各大门户网站都架设了大型聊天室。
如:新浪聊天
室、中华网社区聊天室、搜狐等都成为网民们的热门聊天室。以新浪聊天室为例看,聊天室呈现积聚人气作用,并开设不同主题的聊天室以使网民们具有针对性的使用聊天室。 本小组
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
设计一个实现基于Java语言的聊天室的Windows网络编程,启动服务器后,客户端运行,向服务器端发出请求,连接成功后,会弹出一个聊天室的界面,该界面有私聊(可加入生动的表情描述)、群聊、发送文件等功能,客户可以根据自己的需要选择不同的功能。本人在此小组中的具体任务是实现文件的接收功能,启动服务器监听后,接收客户端发来请求,安排线程接收对方发来的文件(例如文档、照片、音乐、电影等)并存入指定的文件夹中。
1.2可行性分析
经济可行性:由于本系统的主要背景是课程考核,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行Java软件的电脑便可,所以不用考虑到经济问题。
技术可行性: 本系统使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。
运行可行性: 本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
1.3功能要求
(1)在服务器端和客户端分别创建一个套接字对象,通过输入输出流连接在一起。套接字调用close()方法关闭双方的套接字连接。
(2)使用多线程处理套接字连接,把服务器端或客户端读取的数据放在一个单独的
1
线程中去进行,防止服务器端或客户端读取数据可能引起的堵塞。服务器端收到一个客户的套接字后,应该启动一个专门为该客户服务的线程。
(3)成功连接后,在图形界面中用户可以根据自己的需要进行不同的操作,如:群聊天、和某一个用户单独聊天(可加入生动的表情描述)、发送文件等。在界面中会显示用户的聊天记录。
1.4本系统涉及的知识点
, 套接字Socket的建立、连接、关闭,客户端和服务器端的输入/输出流的连接。
, Java中的多线程及线程的常用方法、Runnable接口。
, 基于SWING的图形用户界面设计:布局设计、文本组件、按钮与标签组件、列表组件等。
, InetAddress类。
, 输入/输出流:文件、文件字节流、文件字符流、缓冲流、数据流。 1.5系统运行需求
运行环境:Windows 9x、2000、xp、2003,Linux
必要环境:JDK 1.5 以上
硬件环境:CPU 400MHz以上,内存64MB以上
2 程序总框图和功能模块说明
2.1 程序总框图
网络聊天室
客户端 服务器端
客客户连断在退 户接开线群端IP 出 端验连用聊 地址 数 证 接 户
2
2.2 功能模块说明
2.2.1客户端结构
连接验证:默认IP地址是本地IP地址,默认端口是2525 在线用户:显示在线的用户
群聊:用户可以给所有人发送信息,并能看到其他用户发送给自己或所有人的消息
断开连接:与服务器断开连接,无法发送与接收信息 2.2.2服务器端结构
3
客户端IP地址:可以显示连接上服务器的客户端的IP地址
客户端数:统计连接到服务器的客户端数量。并且可设置最多可连接的数目。
退出:退出服务器
3.系统设计
3.1主要类设计
三个主要类:
, chatServer
, chatApplet
, chatServer_AboutBox 3.2关键函数流程图
3.2.1系统总体流程图
开始
启动服务器
否
判断启
动信息
4
是
启动服务器
登录聊天室
退出聊天室
退出服务器
结束 3.2.2系统客户端流程图
开始
客户端登陆界面
聊天室界面
退出 清屏 聊天
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
保存
结束
5
4.系统调试
4.1客户端
(1)登录截图:
连上服务器后的截图:
(2)群聊截图:
6
4.2服务器端
(1)还没服务器连接的截图:
(2)服务器管理客户端截图:
5.总结
本文讨论了如何利用JAVA技术开发聊天室系统,基本满足了结构化、界面友好、速度快、安全性以及稳定性等特点。
在当今电脑网络密布的世界当中,一个简单高效的局域网通信工具是如此的具有实用性,所以我们应当重视对它的相关研究与开发。在这次的毕业设计中,我应用了JAVA开发工具在WINDOWS平台上开发了一个基于WINDOWS平台的局域网通信工具,在这一重要的领域进行了相关的实践,不管是对我的研究能力,还是实际动手能力,还是
7
资料查阅能力,都起了相当大的益处。所以,我决定认真总结这次毕业设计的经验,以及学习到的知识,来更加的充实自己的头脑和完善自己的知识结构。
系统着重研究并实现了网络应用的部分。根据实现的情况看,具有较友好的聊天界面生成效果,以及流畅的网络通信效果。生成的聊天室可以达到基本的聊天要求,具有较高的研究价值。
一个月的忙碌和工作,本次设计已经接近尾声,作为一个课程考查,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在这里再次感谢我的导师,将明亮老师。
通过毕业设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅,同时在老师的指导和课题组同学的共同帮助下,及时总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。
进入社会后,我以后会更加努力,是学校给我学习的机会,在以后的生活中继续提高自己,为自己创造更多的机会,更好的明天~
6.源程序清单
服务器端:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class chatServer extends JFrame {
//以下为图形界面变量
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JLabel statusBar = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JLabel jLabel1 = new JLabel();
static java.awt.List jList1 = new java.awt.List(13);
JScrollPane scrollpane=new JScrollPane(jList1);
8
//以下为网络相关变量
static Vector clients=new Vector(10); //用vector向量数组存储连接客户变量
static ServerSocket server=null; //建立服务器socket
static int active_connects=0; //用来存储目前连接的客户数
static Socket socket=null; //用来存储一个套接字连接
//chatServer main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
chatServer chatServer1=new chatServer(); //实例化一个chatServer类
chatServer1.show();
System.out.println("Server starting ...");
try
{
server=new ServerSocket(2525); //使用端口2525初始化服务器套接字
}
catch(IOException e)
{
System.out.println("Error:"+e);
}
while(true)
{
if(clients.size()<10) //当客户数小于10个时开始连接
{
try
{
socket=server.accept(); //用来存储连接上的客户socket
if(socket!=null)
{
System.out.println(socket+"连接"); //在控制台打印客户连接信息
}
}
catch(IOException e)
9
{
System.out.println("Error:"+e);
}
int i=0;
do{
Client c=new Client(socket); //定义并实例化一个Client线程类,一个就对应一个客户连接
clients.addElement(c); //加入clients数组中
if(checkName(c)) //调用checkName方法验证c的合法性
{
int connum=++chatServer1.active_connects; //定义connum来存储活动连接数
String constr="目前有"+connum+"客户相连"; //在状态栏里显示连接数
chatServer1.statusBar.setText(constr);
Client listdata=(Client)clients.elementAt(i); //将连接客户的socket信息存储进listdata数组
chatServer1.jList1.addItem(listdata.ip+"连接",i); //将客户socket信息写入list框
c.start(); //启动线程
notifyRoom(); //用notifyRoom方法来监视聊天室连接变化
//不断改变clients数组并刷新客户端信息
}
else
{
//如果名字不合法
c.ps.println("TAKEN");
disconnect(c);
}
i++;
break;
}
while(i
0) //遍历clients数组删除所有连接客户信息
{
Client c=(Client)clients.firstElement();
try
{
c.socket.close();
}
catch(IOException e)
{
System.out.println("Error:"+e);
}
finally
{
clients.removeElement(c);
}
}//end of while
}//end of closeAll method
13
public static boolean checkName(Client newclient) //实现检查连接客户的socket信息是否合法
{
for(int i=0;i
本文档为【网络编程论文(网络聊天室JAVA版)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。