计算机网络课程设计实验报告--QQ网络聊天室实现
计算机网络课程设计实验报告
计算机网络课程设计实验报告一、实验项目:网络聊天程序二、实验要求:利用Winsock控件,采用TCP或UDP方式实现一个网络聊天程序。
具体要求如下:(1)能够实现一个聊天服务器(采用TCP方式时可同时允许15个用户连接),并在用户之间相互进行信息发送。
(2)具有聊天记录功能。
(3)制作一个客户端程序。
在课程设计报告中要求给出程序设计的思想、关键程序说明以及服务器和客户程序运行界面的屏幕截图。
三、实验程序功能:采用TCP方式实现的网络聊天程序:(1)以某一用户名注册进入聊天室,自动判断是否与现有聊天室人员重名,给出相关信息。
进入后启动线程,获得现有聊天室人员的列表信息;(2)点击[送出]按钮,向所有人发送信息。
双击列表中某人的名字,在弹出的窗口中可以写悄悄话,悄悄话内容只显示在这个人的屏幕上;(3)点击[刷新谈话区],可以清空聊天信息屏幕。
点击[刷新聊天者列表]可以重新从服务器读取聊天室人员列表信息;(4)点击[退出聊天室],向所有人发送离开信息,同时刷新聊天室人员列表;(5)服务器端程序先行运行,服务器读取来自客户端的信息流请求,并把相应处理结果返回客户端,完成与客户端的通信。
(6)点击[聊天记录],可以查看聊天室的聊天记录。
四、设计与分析:客户端聊天室客户/服务器通信图(《》表示信息流方向):五、设计思想:传输层协议有两种:TCP和UDP,TCP是可靠传输,它把信息包捆绑,在必要的时候,排序和重传这些信息包以获得可靠的数据传输。
UDP支持快速的、无连接的、不可靠的信息包传输。
在JAVA中,使用TCP传输,其套接字的封装函数分TCP/IP客户套接字和TCP/IP服务器套接字。
本程序使用TCP做,采用了JA V A中的流式Socket 的通信机制,流式Socket 通信过程如下图:客户套接字函数:Socket(String hostname,itn port)或Socket(InetAddress ipAddress,int port)服务端套接字函数:ServerSocket(int port)ServerSocket(int port,int maxQueue)ServerSocket(int port,int maxQueue,InetAddress localAddress)六、文件说明:文件清单:(1)客户端线程主类:chatappletthreepublic class chatserverthree implements Runnable{/*聊天室服务器端处理主类*///服务器构造初始化线程public chatserverthree(){}//服务器main()初始化public static void main(String args[]){}//服务器线程connect操作run方法public void run(){}//向聊天室所有人员发送普通话语信息public void broadcast(String msg){}//处理悄悄话,向特定人员发送悄悄话public void broadcast1(String msg){}//客户端线程类firstthreadclass firstthread extends Thread{}//firstthread 初始化线程public firstthread(chatserverthree server,Socket client){}//监听运行线程public void run(){while(true){line=in.readUTF();//line 读取来自客户端线路的信息//线路信息前端为PEOPLE表明有新人进入了聊天室if(line.startsWith("PEOPLE")){}//线路信息前端为QUIT表明有人离开了聊天室else if(line.startsWith("QUIT")){}//线路前端为MSG表明接收到的是普通聊天话语信息e lse if(line.startsWith("MSG")) {}//线路前端为“悄悄的对”表明接收到的是悄悄话else if(line.startsWith("悄悄地对")){}//线路前端为newlist表明得到客户端刷新列表的请求else if(line.startsWith("newlist")){}}}(2) 聊天室界面AWT面板类:Apanel:/*聊天室界面北部面板Apanel类*/class Apanel extends Panel //用于构造面板{}Bpanel:/*聊天室界面中部面板Bpanel类*/class Bpanel extends Panel{}Cpanel:/*聊天室界面南部面板Cpanel类*/class Cpanel extends Panel{}(3) 发送悄悄话弹出式窗口类:Mywindow:class Mywindow extends Frame implements ActionListener{//构造方法初始化画出弹出式窗口界面Mywindow(){}//处理按钮事件的方法public void actionPerformed(ActionEvent e){}}(4)服务器端线程类:Chatserverthree:/*聊天室主类chatappletthree类*/public class chatappletthree extends Applet implements Runnable,ActionListener,ItemListener {//Applet 启动初始化画出聊天室界面,建立与服务器连接public void init() {}//启动线程public void start(){}//终止线程public void stop() {}//关闭监听端口,断开连接public void destroy() {}//客户端启动线程public void run() {}}(4)服务器为每一个客户端启动的线程类Firstthread//客户端线程类firstthreadclass firstthread extends Thread{protected Socket client;//listen读取来自客户端的消息:name 格式为:PEOPLE+名字+[性别]String line,name;protected DataOutputStream firstout,out; //定义网络数据输出流protected chatserverthree server;protected DataInputStream in; //定义网络数据输入流//firstthread 初始化线程public firstthread(chatserverthree server,Socket client){this.server=server;this.client=client;。
网络课程设计实验报告--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 ActionListenerprivate MyServe server;private JTextField filed1;public void actionPerformed(ActionEvent e)MyChatSet.java服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。
聊天室 实验报告
聊天室实验报告聊天室实验报告引言:随着互联网的迅速发展,人们之间的交流方式也在不断改变。
聊天室作为一种虚拟的交流平台,已经成为了人们日常生活中不可或缺的一部分。
本实验旨在探究聊天室对人们社交行为的影响,并分析其中的优势和劣势。
一、聊天室的优势1.1 跨越地域限制聊天室通过互联网的连接,使得人们可以随时随地与世界各地的人进行交流。
这种跨越地域限制的特点,使得人们可以结识更多来自不同文化背景的朋友,拓宽了自己的社交圈子。
1.2 匿名性在聊天室中,人们可以使用匿名的身份进行交流。
这种匿名性给予了人们更大的自由度,可以更加坦诚地表达自己的想法和感受。
同时,匿名性也减少了人们之间的偏见和歧视,使得交流更加平等和包容。
1.3 丰富的交流形式聊天室提供了多种多样的交流形式,包括文字、语音、视频等。
人们可以根据自己的需求选择合适的交流方式,使得交流更加便捷和多样化。
这种丰富的交流形式也增加了人们之间的沟通效率和质量。
二、聊天室的劣势2.1 虚拟性聊天室的交流是基于虚拟平台的,人们无法真正感受到对方的存在和情感。
这种虚拟性可能导致人们在交流中缺乏真实性和深度,无法建立起真正的信任和情感连接。
2.2 信息安全问题在聊天室中,人们往往需要提供一些个人信息,如账号、密码等。
这些信息的泄露可能会导致个人隐私的泄露和安全问题的产生。
因此,在使用聊天室时,人们需要注意保护个人信息的安全。
2.3 信息过载聊天室中的信息量庞大,人们往往需要花费大量的时间和精力来筛选和处理信息。
这种信息过载可能会导致人们的压力增加,影响到正常的社交行为和生活秩序。
三、聊天室的应用领域3.1 商业交流聊天室在商业领域中得到了广泛的应用。
通过聊天室,企业可以与客户进行实时交流,了解客户需求,并及时解决问题。
同时,聊天室也为企业提供了一个广告宣传的平台,可以快速传播信息,提升品牌知名度。
3.2 学术交流聊天室在学术领域中也发挥着重要的作用。
学者们可以通过聊天室分享研究成果、讨论学术问题,促进学术交流和合作。
计算机网络课程设计--聊天室
计算机网络课程设计报告学生姓名学号班级计算机0908班指导教师设计时间2012.1.7~2012.1.10目录第一章设计目的、任务1.1设计目的 (3)1.2设计的任务 (3)第二章系统分析设计2.1系统流程分析 (4)2.2系统功能需求分析 (5)2.3系统运行要求 (6)2.4系统数据要求 (6)第三章系统实现3.1 系统界面设计 (7)3.2 系统功能模块设计 (9)第四章体会和建议第一章设计目的、任务1.1设计目的1.了解通信规范的细节及其实现。
2.通过本次网络课程设计,掌握高级编程语言中对用户界面的设计方法,以及多线程技术、基于TCP/IP的Socket通信的编程方法,同时能够把协议的设计思想应用到实际中去。
1.2设计的任务编写一个聊天室,实现C/S模式的会话。
基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。
学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。
网络聊天是网络编程的典型应用之一,编写网络聊天软件对于学习网络编程无疑有着很大的帮助。
第二章系统分析设计2.1系统流程分析该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。
当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
因此,系统需要实现服务器端和客户端两部分程序。
下图是基本的客户端连接服务器的流程图。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。
首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。
而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
毕业设计报告-网络在线聊天室
毕业设计报告作者:学号:系: xxxx大学专业:计算机及应用题目:在线聊天室指导者: x x 教授评阅者:2015 年 6 月摘要目录第一章绪论 (1)1.1 设计思想 (1)1.2 开发工具和相关技术简介 (1)1.2.1 ASP技术简介 (1)1.2.2 SQL server 2000简介 (2)1.2.3 JavaScript简介 (3)1.2.4 DHTML(动态HTML)简介 (3)1.2.5 Cookie 技术简介 (3)第二章聊天室总体分析和设计 (4)2.1 聊天室运行原理 (4)2.2 聊天室的功能 (4)2.3 聊天室的页面设计结构 (4)2.4 聊天室的程序结构设计 (5)2.5 数据库结构设计 (6)2.5.1 实例聊天室列表模块 (6)2.5.2 在线用户的列表模块结构 (7)第三章聊天室的详细设计 (8)3.1 变量说明 (8)3.2 聊天室的核心引擎(全局聊天消息分发引擎)设计 (9)3.3 用户客户端聊天信息输入与发送模块设计 (12)3.4 聊天室主要模块 (12)3.5 聊天室的设计功能与实现 (12)3.6 聊天室的总体设计流程 (13)第四章聊天室运行环境及构架说明 (22)4.1 环境、实现方式 (22)4.2 运行环境构建 (22)4.3 访问数据库的方式 (23)第五章设计体会 (27)第六章致谢 (28)参考文献 (29)第一章绪论在Internet(互连网)飞速发展的今天,上网成为越来越多人们的选择。
有关的网络技术也层出不穷。
现今活跃在WEB站点中的ASP就是近年才发展起来的一项新型技术。
ASP功能强大、本领高强,利用ASP功能时几乎没有什么限制,可以实现动态页面。
本文主要介绍了ASP技术相关的基础知识,并探讨了利用ASP + SQL server 建立聊天室的设计思想、方法及设计过程,详细地分析了各个模块的功能及实现方法。
本文所实现的聊天室具有良好的程序结构和人机交互界面,通用性强,可应用于不同需求的网站。
设计聊天室实验报告
write( sockfd, str, strlen( str));
fcntl( 0, F_SETFL, O_NONBLOCK);
while ( 1) {
if ( (status = read( sockfd, str, MAX_LINE))>=0 )
{
if ( status == 0) exit(0);
sizeof( serv_addr))<0) {
printf( "client:can`t connect to server\n");
fflush( stdout);
return( 0);
}
return( sockfd);
}
运行结果:
服务器端运行结果,显示端口号并处于等待连接状态:
群聊功能,四个客户端代表四个用户,通过服务器的转发实现通信。
#include<>
#include<>
#include <>
#include <netinet/>
#include <>
#include <>
#include <>
#define MAX_LINE 500
#define MAX_NAME 100
int init_cli();
#ifndef __SELECT__
实验内容
(1)编写聊天室的客户端和服务器端,客户端主要功能是发送信息,服务器端的主要功能是将客户端发的内容转发到除发送端以外的所有客户端,实现客户端和客户端的通信。
(2)编写基于原始套接字的网络通信原型系统;
网络聊天室的设计与实现
网络聊天室的设计与实现一、引言二、设计需求1.用户注册和登录功能:用户可以通过注册账号并登录使用聊天室。
2.群聊功能:用户可以进入特定的聊天室,与其他用户进行群聊。
3.私聊功能:用户可以选择与其他用户进行私聊。
4.用户管理功能:管理员可以对用户进行管理,包括禁言、踢出聊天室等操作。
5.聊天记录保存功能:聊天室需要能够保存聊天记录,以便用户可以查看历史消息。
三、系统架构设计聊天室系统主要由服务器端和客户端组成。
1.服务器端架构设计服务器端负责接收和处理客户端发送的请求,并将数据发送给其他客户端。
其主要功能包括用户身份验证、消息转发、聊天记录保存等。
服务器端需要支持多客户端同时连接的功能,因此可以采用多线程或异步IO的方式处理客户端请求。
采用多线程的方式可以为每个客户端分配一个线程负责处理请求,而采用异步IO的方式可以利用事件循环机制来处理多个客户端的请求。
2.客户端架构设计客户端主要负责用户界面和与服务器端的交互。
用户界面可以采用图形界面或命令行界面,用户可以通过界面进行注册、登录、进入聊天室、发送消息等操作。
客户端需要与服务器端建立Socket连接,通过发送请求给服务器端并接收服务器端返回的数据来实现与服务器端的交互。
客户端可以使用多线程或异步IO的方式处理与服务器端的交互,以避免界面卡顿。
1.用户注册和登录功能的实现用户注册和登录功能可以通过数据库来实现。
用户注册时,需要将用户名和密码保存到数据库中;用户登录时,需要通过用户名和密码来验证用户身份,并返回登录结果给客户端。
2.群聊功能的实现群聊功能可以通过服务器端将消息发送给所有连接的客户端来实现。
服务器端维护一个群聊消息队列,当接收到一条群聊消息时,将消息添加到消息队列中,并通知所有客户端有新消息到来。
客户端收到新消息后,将消息显示在聊天界面上。
3.私聊功能的实现私聊功能可以通过服务器端将消息发送给指定的客户端来实现。
服务器端维护一个映射表,将每个用户与其对应的客户端关联起来。
互联网程序设计实验五
实验报告(五)课程名称:互联网程序设计年级:2017级实验日期:姓名:学号:班级:教师评语(成绩):实验名称:实验五 QQ聊天项目拓展(4学时)DatagramPacket backPacket=new DatagramPacket(buf,buf.length,packet.getAddress(),packet.getPort());//向登录用户发送的报文serverSocket.send(backPacket); //发送}else { //登录成功backMsg.setType("M_SUCCESS");byte[] buf=Translate.ObjectToByte(backMsg);DatagramPacket backPacket=new DatagramPacket(buf,buf.length,packet.getAddress(),packet.getPort());//向登录用户发送的报文serverSocket.send(backPacket); //发送User user=new User();user.setUserId(userId); //用户名user.setPacket(packet); //保存收到的报文userList.add(user); //将新用户加入用户列表//更新服务器聊天室大厅parentUI.txtArea.append(userId+" 登录!\n");//向所有其他在线用户发送M_LOGIN消息,向新登录者发送整个用户列表for (int i=0;i<userList.size();i++) { //遍历整个用户列表//向其他在线用户发送M_LOGIN消息if(!userId.equalsIgnoreCase(userList.get(i).getUserId())){DatagramPacketoldPacket=userList.get(i).getPacket();DatagramPacket newPacket=new DatagramPacket(data,data.length,oldPacket.getAddress(),oldPacket.getPort());//向其他用户发送的报文serverSocket.send(newPacket); //发送}//end if//向当前用户回送M_ACK消息,将第i个用户加入当前用户的用户列表Message other=new Message();other.setUserId(userList.get(i).getUserId());other.setType("M_ACK");byte[] buffer=Translate.ObjectToByte(other);DatagramPacket newPacket=new DatagramPacket(buffer,buffer.length,packet.getAddress(),packet.getPort());serverSocket.send(newPacket);}//end for}//end if}else if (msg.getType().equalsIgnoreCase("M_MSG")) { //是M_MSG消息//更新显示parentUI.txtArea.append(userId+" 说:"+msg.getText()+"\n");//转发消息for (int i=0;i<userList.size();i++) { //遍历用户DatagramPacket oldPacket=userList.get(i).getPacket();DatagramPacket newPacket=new DatagramPacket(data,data.length,oldPacket.getAddress(),oldPacket.getPort());serverSocket.send(newPacket); //发送}}else if (msg.getType().equalsIgnoreCase("M_QUIT")) { //是M_QUIT消息//更新显示parentUI.txtArea.append(userId+" 下线!\n");//删除用户for(int i=0;i<userList.size();i++) {if (userList.get(i).getUserId().equals(userId)) {userList.remove(i);break;}}//end for//向其他用户转发下线消息for (int i=0;i<userList.size();i++) {DatagramPacket oldPacket=userList.get(i).getPacket();DatagramPacket newPacket=new DatagramPacket(data,data.length,oldPacket.getAddress(),oldPacket.getPort());serverSocket.send(newPacket);}//end for}//end if} catch (IOException | NumberFormatException ex) { }}//end while}//end run}//end class实验结果:五、总结对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。
(完整)计算机网络TCP聊天室实验报告
计算机网络原理实验报告书姓名:XXX班级:XXXXXX学号:XXXXXXXXXXXXXXXXXXXXXX二0一一年五月socket编程一、实验目的本次实验的目的是通过利用Socket编写简单的客户/服务器程序,了解TCP/IP网络的基本通信原理和编程方法,初步掌握TCP/IP网络的传输层上的编程接口(Windows Sockets API),学会利用这些接口来编写简单的网络通信软件。
二、实验内容利用socket编写简单的客户/服务器程序,比如聊天室、文件传输等。
三、实验步骤➢思路分析✧将服务器与客户端分两部分实现,采用多线程实现多个客户端与服务器端连接✧客户端建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。
✧服务器端通过创建一个Socket的Arraylist数组,与指定的本地端口绑定,就可以在端口进行侦听.如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。
然后登录成功的客户就可以在服务器上聊天了.➢代码实现➢p ackage TCP_chat_room。
gui;➢➢i mport java.io。
IOException;➢➢p ublic class ClientApp {➢public static void main(String[] args){➢/**➢ * javax.swing。
UIManager$LookAndFeelInfo[Metal javax.swing。
plaf。
metal.MetalLookAndFeel]➢javax。
swing。
UIManager$LookAndFeelInfo[Nimbus com.sun。
java.swing.plaf。
nimbus.NimbusLookAndFeel]➢javax。
swing.UIManager$LookAndFeelInfo[CDE/Motif com.sun。
JAVA课程设计报告聊天室
JAVA课程设计报告聊天室一、课程目标知识目标:1. 学生能理解网络编程的基本概念,掌握JAVA Socket编程的基础知识。
2. 学生能运用面向对象编程思想,设计并实现聊天室客户端与服务器的数据传输功能。
3. 学生了解并掌握多线程技术在网络编程中的应用。
技能目标:1. 学生能运用所学知识,独立编写并调试简单的聊天室程序。
2. 学生具备分析问题、解决问题的能力,能针对聊天室程序进行优化和改进。
3. 学生能在团队协作中发挥自己的作用,与他人共同完成一个完整的网络编程项目。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习JAVA的自信心。
2. 学生认识到团队合作的重要性,培养良好的团队协作精神。
3. 学生通过编程实践,体验创新与创造的乐趣,培养积极向上的学习态度。
本课程针对高年级学生,结合课本内容,注重理论与实践相结合,以提高学生的实际编程能力为主要目标。
课程要求学生在掌握基本知识的基础上,能够独立完成实际项目,培养其分析问题、解决问题的能力。
同时,课程强调团队协作,使学生学会与他人共同进步,共同成长。
通过本课程的学习,使学生达到知识、技能和情感态度价值观的全面提升。
二、教学内容1. 网络编程基础理论:介绍网络编程的基本概念,包括IP地址、端口号、协议等,使学生理解网络通信的基本原理。
- 教材章节:第三章 网络编程基础2. JAVA Socket编程:讲解Socket编程的原理,指导学生掌握客户端与服务器之间的数据传输方法。
- 教材章节:第四章 Socket编程3. 面向对象编程:运用面向对象编程思想,设计聊天室程序,包括类的定义、封装、继承与多态。
- 教材章节:第二章 面向对象编程基础4. 多线程技术:介绍多线程编程的概念,分析在聊天室程序中如何实现多用户并发通信。
- 教材章节:第五章 多线程编程5. 聊天室程序设计与实现:指导学生完成聊天室客户端与服务器的编写,实现基本的功能需求。
QT聊天室设计报告
二、项目功能和要求:
开发一个简单的即时通信的软件。要求PC机作为服务端,实验箱作为客户端,至少有实现两个客户端能同时聊天的功能。
三、程序开发主要功能实现:
1、服务器端:
(1)界面设计:
(2)主要功能实现代码:
Create槽函数实现,新建聊天室服务器
项目:QT的聊天室
地点:西楼1302
实训目的:
1、根据需要掌握具体的嵌入式系统业务过程
2、掌握QT网络编程的方法
3、掌握QT嵌入式应用程序的开发过程
实训设备、器材和仪表:
1、装有Linux操作系统的PC机一台.
2、XSBase270 ARM实验开发平台一套或开发板一套.
实训步骤和内容:
一、聊天软件需求分析
在刚开始要做这个实训的时候,发现对Qt的知识掌握的并不牢靠,对于从何下手感到迷茫。最后,参考了在网络找到的聊天项目源代码,边翻看PPT讲义,边请教同学,才顺利的做了出来。这个过程是痛苦的,但在这个痛苦的过程中,我也把这个学期学习的QT知识系统地梳理了一遍。当我把众多零散的QT知识点连串起来时,发现自己对于所学的知识有了一个全新的认识,QT是多么的强大。
广东科学技术职业学院广州学院
实训记录
实训专业计算机算机应用技术
实训班级08计应2班
实训室西楼1302
指导教师吴新生
2010年12月~2010年12月
实训报告
专业
计算机应用技术
年级
2008届
班级
计应2班
学生姓名
学号
0801080215
工作
学生
实训时间
2010年12月10日-12月21日
网络聊天室实现报告
一、背景知识在传统生活里,人们利用写信、电话等方式联络,但此类方式周期缓慢,呆板且不可靠。
在这个信息极其发达的时代,随后我们可以用来进行信息交流的方法日益增多,比如电报、电话、电子邮件、OICQ等通讯手段,但是这些或者不方便或者有局限性或者有费用的问题。
近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面,使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。
各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。
过去的种种陈旧的联系方式,已经不能满足现代生活的需要。
网络聊天室凭借其友好的外观、强大的功能、使用的便利、联系的及时等特点博得现代人的青睐,其应用的市场十分广阔。
本系统使用的是C/S模式,使用C#进行聊天室的设计与开发。
本文主要介绍了所应用到的技术的基础知识,并探讨了建立聊天室的设计思想、方法与功能实现流程图。
本文所实现的聊天室具有良好的人机交互界面、合理的数据库结构可以实现发言、自动显示所在聊天室的成员等交互功能,经过测试调试,证明可实际应用。
下图为网络聊天室的主界面图1 网络聊天室主运行界面图二、核心算法思想实现一个基于Socket的简易的聊天室,实现的思路如下:聊天室服务器端启动服务器时,将创建侦听套接字,创建用户列表,创建并启动侦听线程。
用户登录时,将创建套接字,与服务器直接连接,并创建客户端接收线程。
服务器端侦听到有用户上线后,将创建新的用户节点,并在主界面上显示用户上线,发送新的用户列表。
客户端发送信息时,将要发送的内容进行发送。
服务器端发送信息时,如果是发送给所有人,就遍历用户链表,如果是发送给某个用户,先在链表中找到该节点,再发送信息。
服务器端和客户端接收信息时,先读取聊天信息标识,做出判断后,依次读取信息,处理信息,并在主界面上显示,服务器端还要将准备好的信息发送给指定的用户。
开启客户端主界面后,就会启动文件接收侦听线程,如果有用户发送文件至此,将会有信息提示,确定接收后,将启动文件接收线程,对方用户端将启动文件发送线程。
设计聊天室实验报告
设计聊天室实验报告一、实验目的本实验的目的是设计一个基于网络的聊天室,实现多用户之间的实时聊天功能。
通过这个实验,我们可以更好地理解计算机网络通信的原理和网络编程的基本知识,同时提高我们的编程能力和团队协作能力。
二、实验内容1.搭建网络环境首先,我们需要搭建一个网络环境,使得多个用户可以通过网络进行通信。
我们选择使用Socket编程,通过TCP/IP协议进行通信。
我们使用Python语言进行编程,通过socket模块中的函数来创建网络连接。
2.实现用户注册和登录功能在聊天室中,每个用户都需要有自己的账户并进行登录操作。
在实验中,我们使用MySQL数据库来存储用户的账户信息。
用户可以通过注册功能来创建自己的账户,并使用登录功能进行登录。
在用户登录成功后,系统将会为其分配一个唯一标识符,并将其保存在服务端。
3.实现聊天功能在登录成功后,用户可以进入聊天室进行聊天操作。
用户可以发送消息给其他用户,并且可以实时接收其他用户发送的消息。
在实现聊天功能时,我们使用多线程的方式,使得每个用户可以同时进行收发消息的操作。
同时,为了保证消息的有序性,我们使用队列来存储用户发送的消息,并使用互斥锁来保护队列的访问。
4.实现用户列表功能为了方便用户之间的选择和通信,我们实现了用户列表功能。
用户可以查看当前在线的用户,并选择要发送消息的目标用户。
在用户列表中,我们显示用户的昵称和状态信息。
三、实验结果通过本次实验,我们成功实现了基于网络的聊天室,并且完成了所有的实验内容。
实际测试中,我们模拟多个用户在不同的终端进行登录和聊天操作,并得到了预期的结果。
用户可以通过注册功能来创建自己的账户,并通过登录功能进行登录。
登录成功后,用户可以进入聊天室进行聊天操作,并可以看到其他用户发送的消息。
同时,用户也可以选择特定的用户进行私聊。
四、实验总结通过本次实验,我们对计算机网络通信的原理和网络编程有了更深入的了解。
我们学会了如何使用Socket编程进行网络连接,并实现了用户注册、登录、聊天和用户列表等功能。
JAVA课程设计实验报告-“聊天室”报告
第二章 聊天室的设计
2.1聊天室的粗略设计分析
聊天系统平台应有两个部分组成:服务端和客户端。服务端主要完成用户信息的存储、客户端命令的接受与响应以及发送系统消息、信息转发、踢人等服务端应有的功能。客户端主要完成聊天信息的发送与接受、登录、注销等功能。
此c/s系统使用的是TCP/IP协议,应用了如下通讯模式:
如果用户名和密码正确的话,则登录聊天室主界面;如果已经在线,则输出已经在线;否则输出用户名和密码错误,需要重新登录或者注册。
在线用户列表
用户登录之后,需要知道系统中,有哪些用户在线,这样可以方便用户选择与个别用户私聊和传送文件,也可以进行公聊。
用户公聊
用户输入的用户名和密码都正确后,则进入聊天室。聊天主界面主要由四大版块组成:公聊的聊天信息、在线用户列表、好友列表,系统消息和聊天的一些操作。
1.2聊天室的基本功能-------------------------------------------------------------3
1.3设计所用参考资料-------------------------------------------------------------6
第二章 聊天室的设计-------------------------------------------6
由于Client使用了流套接字,所以服务程序也要使用流套接字。这就要创建一个ServerSocket对象,接下来服务程序进入无限循环之中,无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。由于存在单个服务程序与多个客户程序通讯的可能,服务程序循环检测是否有客户连接到服务器上,如果有,则创建一个线程来服务这个客户,以此完成对客户端的监听。
网络聊天室实现报告
一、背景知识在传统生活里,人们利用写信、电话等方式联络,但此类方式周期缓慢,呆板且不可靠。
在这个信息极其发达的时代,随后我们可以用来进行信息交流的方法日益增多,比如电报、电话、电子邮件、OICQ等通讯手段,但是这些或者不方便或者有局限性或者有费用的问题。
近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面,使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。
各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。
过去的种种陈旧的联系方式,已经不能满足现代生活的需要。
网络聊天室凭借其友好的外观、强大的功能、使用的便利、联系的及时等特点博得现代人的青睐,其应用的市场十分广阔。
本系统使用的是C/S模式,使用C#进行聊天室的设计与开发。
本文主要介绍了所应用到的技术的基础知识,并探讨了建立聊天室的设计思想、方法与功能实现流程图。
本文所实现的聊天室具有良好的人机交互界面、合理的数据库结构可以实现发言、自动显示所在聊天室的成员等交互功能,经过测试调试,证明可实际应用。
下图为网络聊天室的主界面图1网络聊天室主运行界面图二、核心算法思想实现一个基于Socket的简易的聊天室,实现的思路如下:聊天室服务器端启动服务器时,将创建侦听套接字,创建用户列表,创建并启动侦听线程。
用户登录时,将创建套接字,与服务器直接连接,并创建客户端接收线程。
服务器端侦听到有用户上线后,将创建新的用户节点,并在主界面上显示用户上线,发送新的用户列表。
客户端发送信息时,将要发送的内容进行发送。
服务器端发送信息时,如果是发送给所有人,就遍历用户链表,如果是发送给某个用户,先在链表中找到该节点,再发送信息。
服务器端和客户端接收信息时,先读取聊天信息标识,做出判断后,依次读取信息,处理信息,并在主界面上显示,服务器端还要将准备好的信息发送给指定的用户。
开启客户端主界面后,就会启动文件接收侦听线程,如果有用户发送文件至此,将会有信息提示,确定接收后,将启动文件接收线程,对方用户端将启动文件发送线程。
聊天室课程设计报告
西安郵電學院网络课程设计设计报告题目:基于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)、用户的状态.每一个客户端用户都可以实时看到目前其他在线用户的状态。
计算机网络聊天室课程设计
《计算机网络》课程设计报告设计题目:聊天室同组人姓名:王巍瑾马志超周旭同组人学号: 201515151052015151510420151515138专业班级:计科153指导教师:金松林日期:2017年6月12日-16日一、题目意义和需求分析1.题目意义即时通讯或在线聊天是目前Internet上最为流行的通讯方式,用户之间通过文字传输信息。
这是一种可以让使用者在网络上建立私人聊天室的实时通讯服务。
除了简单的文字信息,使用者之间还可以互相发送文件、文档、音乐、视频等文件.只要与服务器链接,无论对方在天涯海角,双方隔得多远都没有问题。
消息的实时更新,拉近了我们相知的桥梁,文件的相互传输,使同事之间办公更方便快捷。
2.需求分析a.注册当选择注册时,创建一个File文件类,载入“user.txt",判断用户名是否已经存在,用户名有效后写入“user.txt"。
b.登录去“user.txt”读取用户数据,验证用户名是否存在,验证用户密码是否正确,如果以上验证全部正确,返回客户端信息,提示登陆成功进入聊天界面。
c.聊天所有已登录的用户的名称都会在列表中显示,然后就可以选择其中一个或多个发起聊天。
接收用户聊天信息,当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其转换为Message对象,返回聊天信息,然后系统从Message中提取消息类型,再根据类型将消息转化后通过Socket转发到相应的用户。
d.文件传输在聊天的基础上增加了一个文件传输功能。
同事之间办公难免有一些资料的来往,在登录列表中选择一个用户或多个用户发送文件,等对方确认接收后即可建立连接进行文件传输.二、设计说明聊天室总体分为三个模块,主要包括注册登录,聊天模块,文件传输模块。
系统运行在java环境中,要求java环境为JDK 1.8+;设计中的重点是通过Java中的ServerSocket搭建TCP服务器,通过在客户端创建Socket套接字连接服务器,然后通过ObjectOutputStream来发送Message(数据消息的封装类)对象让服务器接受。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络课程设计报告设计选题网络聊天室姓名马继鸣学号 **********完成时间 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 ActionListenerprivate MyServe server;private JTextField filed1;public void actionPerformed(ActionEvent e)MyChatSet.java服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。
关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。
public static ArrayList<MyserThread> servers=new ArrayList<MyserThread>();//线程队列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<String, MyUserInfo> maps=new HashMap<String, MyUserInfo>();public static boolean CheckUser(MyUserInfo user)// 验证用户名MyFrame.java建立服务器的主界面,关联侦听器。
并启动线程。
MyFrame my=new MyFrame();my.ShowUI();// 显示UI界面public void ShowUI()server.SetUP();MyserThread.java服务器线程类,定义输入输出流,发送读取信息,获取信息中相应标签的信息,用以判断用户名,密码,并可以中断连接。
this.socket=socket;output=socket.getOutputStream();input=socket.getInputStream();public void SendMess(String s)//发送信息public String ReadMess() //读取信息public boolean ReadFirst()//将第一条信息读出来public String GetValue(String type ,String Mess)public void Pocess()//用以判断用户名、密码public void run()//线程开始public MyUserInfo getUser()//获得该线程中的用户信息MyServe.java建立服务器,并启动该线程。
server=new ServerSocket(inport);Socket sc=server.accept();//获得socket对象MyserThread th=new MyserThread(sc);th.start(); //启动线程客户端中主要的功能文件概述如下:MyButLis.java主要用于添加事件侦听和动作处理,具体是在客户端中的登陆注册发送等的处理。
public MyButLis(MySocketChat socket,JTextArea area1,JTextArea area2,MyLoginUI loginUI,JComboBox box)public void actionPerformed(ActionEvent e) //设置动作监听器MyChatFrame.java客户端的图形界面。
关联侦听器。
并启动线程。
socket.setArea(area1);socket.start()MyLoginUI.java登陆界面MySocketChat.java构建连接,截取字符串,发送登陆,注册,聊天信息,读取信息并判断设置启动线程方法。
public MySocketChat(JTextField field1,JTextField field2,JTextArea area)//重写构造函数public String GetValue(String type ,String Mess) //截取字符串public void SendMess(String type)// 发送登陆或者注册信息public void SendChat(String getter,String chat)// 发送聊天消息public String ReadMess ()//读入的信息public void CheckMess(String Mess) //判断是什么消息public void run()//设置启动方法三. 调试及测试1、调试过程中遇到的主要问题及解决方法在对于群聊和私聊的处理中,只实现了群聊,私聊虽有写,但是还没有实现,由于时间仓促,只能在寒假的其余时间努力完成。
还有就是如何在服务器与客户端的信息交互过程中,让他们能分辨是哪种信息并准确的读出来。
如果不能准确的分析,则数据的交换只能完成一种粗略的互换,而不能提取聊天内容等用户希望得到的信息。
为此,我专门看了很多相关的资料,在很多方法里面选取了一种自己容易理解的方法,我就定义了几种方式,分别辨认登陆注册聊天列表等信息:"<msg><type>"+type+"</type>"+"<name>"+user+"</name>"+"<pwd>"+pwd+"</pwd></msg>";//第一个与最后一个msg是标示一整句话的标示符 type标示数据类型,两个<type>中间的type即为需求数据,两个<user>之间的是用户名称,两个<pwd>之间的pwd指的是密码"<msg><type>chat</type>"+"<sender>"+user+"</sender>"+"<reciver>"+gett er+"</reciver>"+"<content>"+chat+"</content></msg>";//其中sender,reciever,content分别指发送者、接受者、内容。
一些语法问题,在随着写程序的过程中,也慢慢纠正。
在服务器组建中,由于java对于网络连接强有力的支持和丰富的代码,让我没有遇到太难的问题。
2、对设计和编码的回顾讨论和分析在获取系统时间这一块上,还是做得比较好。
Calendar ca=Calendar.getInstance();Date da=new Date();// 注意是在java.util.DateSimpleDateFormat format=new SimpleDateFormat("HH:mm:ss");//设置时间格式da=ca.getTime();time=format.format(da);处理保存的注册信息时,可能做得不是很好,将hashmap写入文件,这样不能长期保存注册信息,只能在服务器不关闭的状态下,保存注册信息。
这个也会继续改进3、程序运行的时空效率分析本程序应用了线程对端口进行侦听。
线程一直后台开启,长期占用系统资源,但又能及时的实现端口监听和消息的收发。
4、测试数据集服务器端程序主界面:可以记录用户名,账号,IP地址,并可以发送系统消息客户登陆注册界面注册成功提示框客户端运行界面用户端测试界面中间的(全部)按钮,点击后可以显示当前在线的好友列表,并选择聊天对象四、经验和体会。
这是我第一次做java项目,只是这个学期选修了面向程序设计,每周一节课,很浅显的学习了java语言,在综合性如此强的项目设计中,感觉力不从心。