聊天系统实验报告

合集下载

聊天软件实验报告

聊天软件实验报告

聊天软件实验报告篇一:简单聊天程序的设计与实现实验报告实验2.7 简单聊天程序的设计与实现班级:计科1301 学号:201350080105姓名:张蓉一、实验目的1,掌握Socket 程序设计方法2,掌握基于Socket 的聊天程序设计方法3,进一步熟悉C语言或其他程序设计语言二、实验设备硬件:运行Windows操作系统的计算机软件:C语言或其他程序设计语言开发环境三、实验内容1,使用基于Socket 的程序设计方法设计聊天客户端和服务器客户端程序2,程序应能实现传输文字信息和聊天功能四、基本原理聊天程序是指能提供两人或多人聊天的应用程序,QQ 程序采用的是C/S通信模式,服务器跟客户之间主要有一对多和多对多模式,一对多模式是在服务器和客户端之间用客户端程序登录,验证用户密码,获取在线好友等信息,多对多模式则是在客户端与客户端之间,在线好友直接通信聊天,每个客户端上有实现服务端和客户端两个功能的部分,前者用于接收聊天数据,后者用于发送聊天数据。

用C/S模式进行通信时,作为客户端在请求与服务器连接时需要知道服务器端的IP地址和端口号,腾讯公司的服务器有固定公用网址,客户能很容易的回去服务器的相关信息,在客户端与客户端之间通信时,可以通过登录QQ,让QQ服务器端获得该用户的IP地址和端口号信息,然后通知其他要与该用户进行通信的用户,其他用户就可以连接该用户并与之通信。

五、程序实现本程序采用基于面向无连接的UDP协议。

需要用到的函数有bind()、sendto()、recvfrom()等设计一个基本的网络服务器有以下几个步骤:1、初始化Windows Socket2、创建一个监听的Socket3、设置服务器地址信息,并将监听端口绑定到这个地址上4、开始监听5、接受客户端连接6、和客户端通信7、结束服务并清理Windows Socket和相关数据,或者返回第4步客户端程序框架类似程序源代码:(1)服务器端代码:#include <stdio.h>#include <WINSOCK2.H>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, wsaData );if (err != 0 ){return;}if (LOBYTE(wsaData.wVersion) != 1 ||HIBYTE(wsaData.wVersion) != 1){WSACleanup();return;}SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置端口号为6666bind(sockSrv, (sockaddr*)addrSrv, sizeof(sockaddr));char sendBuf[100];char recvBuf[100];char tempBuf[200];int len = sizeof(sockaddr);SOCKADDR_IN addrClient;while(1){recvfrom(sockSrv, tempBuf, strlen(tempBuf), 0,(sockaddr*)addrClient, len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say:%s", inet_ntoa(addrClient.sin_addr), tempBuf);printf("%s\n", recvBuf);printf("please input your data:");gets(sendBuf);sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) addrClient, len);}else // 若接收到'q',则退出聊天{printf("%s request to quit the chat platform.\n",inet_ntoa(addrClient.sin_addr));sendto(sockSrv, "q", strlen("q") + 1, 0, (sockaddr*) addrClient, len);break;}}closesocket(sockSrv);WSACleanup();}(2)客户端代码:#include <stdio.h>#include <WINSOCK2.H>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, wsaData);if (err != 0){return;}if(LOBYTE(wsaData.wVersion) != 1 ||HIBYTE(wsaData.wVersion) != 1 ){WSACleanup();return;}SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //htonl htons inet_addr inet_ntoaaddrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置同样的端口号6666 char sendBuf[100];char tempBuf[200];char recvBuf[100];int len = sizeof(sockaddr);while(1){printf("please input your data:");gets(sendBuf);sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) addrSrv, len);recvfrom(sockClient, tempBuf, strlen(tempBuf), 0, (sockaddr*) addrSrv, len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say:%s", inet_ntoa(addrSrv.sin_addr), tempBuf);printf("%s\n", recvBuf);}else// 若接收到'q',则退出聊天{printf("the server has been closed!\n");sendto(sockClient, "q", strlen("q") + 1, 0, (sockaddr*) addrSrv, len);break;}}closesocket(sockClient);WSACleanup();}六、实验结果分析篇二:QQ模拟聊天系统实验报告题目:Q Q模拟聊天系统学院:班级:指导教师:姓名:学号:学年、学期:目录1.引言................................................................................................... . (3)1.1 需求分析................................................................................................... . (3)1.2聊天室程序的开发背景................................................................................................... .. (3)1.3聊天室的设计目标................................................................................................... . (4)2.总体设计................................................................................................... . (4)2.1 功能要求................................................................................................... (4)2.2系统主要功能和主要功能描述:............................................................................................... . (5)3.详细设计................................................................................................... (6)3.1设计流程图................................................................................................... .. (6)3.2客户端的实现.................................. ................................................................ (7)3.3服务端的实现................................................................................................... (14)4.运行结果................................................................................................... . (21)4.1 客户端................................................................................................... . (21)4.2 服务器端................................................................................................... (22)4.3 客户端登陆到服务器端................................................................................................... .. (22)4.4 进行对话................................................................................................... (23)4.5 退出服务器端与客户端................................................................................................... .. (23)5.心得体会................................................................................................... (26)6.参考文献................................................................................................... .. (26)1. 引言计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。

网络聊天系统实验报告.

网络聊天系统实验报告.

网络聊天系统实验报告1.功能介绍(1)本程序的主界面截图及介绍本程序的风格是清新明亮,代表着健康向上,偏向于为年轻人设计。

主色调是蓝色,与白色搭配,有一种天马行空的感觉。

让人时刻感受着蓝天白云,使使用者不会因为长久对着这个界面而感到厌倦。

本程序是用MFC的单文档模式,支持SOCKET。

集服务器与客户端于一身,既可用来当服务器,也可当客户端来连接服务器,并且不影响相互之间的功能。

标题栏上显示着本软件的名称:NN聊天器。

NN是本人象征,聊天器是本软件功能的代名词。

如图:标题栏下是菜单栏,其上有:开始、结束、设置、文件、查看、帮助。

它们的快捷键分别为:Ctrl+B,Ctrl+O,Ctrl+T,Ctrl+W,Ctrl+V,Ctrl+H。

它们的功能下文会详细介绍。

如图:菜单栏下是工具栏,有7个图标,单击它们都能实现一个功能;从左到右分别是用于创建服务器,连接服务器,关闭服务器,退出服务器,复制,传输文件,帮助。

如图:工具栏下左边的大片空白区域是显示聊天记录、系统信息、用户信息、用户表情等等文字和图片信息的地方,用户相互之间聊天,聊天的内容就是都显示在这上面的。

它是RichEdit控件,嵌在FORM的对话框上,使用“视”来显示这个控件。

如图:工具栏下右边的长方形,是List Control控件嵌在FORM的对话框中。

在这个控件中,有N行两列,第一列按行显示每个用户的头像,第二列按行显示对应头像的用户昵称。

如右图示:在信息区下就是用户的操作区,是一个对话框,有许多控件,其上有:对象:组合框控件,显示“所有人“和新加入的聊天用户,可以选择你要发送消息的对象。

动作:组合框控件,显示各种动作,选择一种动作,发送消息时,就会显示相应动作的文字信息。

悄悄话:Check Box控件,如果你选择了这个单选框,那么你给谁发送的消息其他人就看不到了,也就是私聊功能。

图片表情:按钮控件,如果你在“添加图片表情“那选择了一个图片表情,那么这个控件上就会显示相应的图片表情。

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结一、项目背景随着互联网的快速发展,人们在日常生活和工作中越来越依赖于网络。

在线聊天成为了人们日常交流的重要方式。

为了满足不同用户对聊天系统的需求,本次实训项目选择开发一款功能完善的Java聊天系统。

二、项目目标1. 设计一款用户界面友好,操作简单的聊天系统。

2. 实现用户的注册和登录功能,保障系统的安全性。

3. 提供实时聊天功能,用户可以通过系统进行文字、图片的交流。

4. 支持多人群聊、私聊的功能。

5. 实现聊天记录的存储和查看。

三、系统架构1. 前端设计本次项目的前端开发使用Java的Swing库进行界面设计,保障用户操作的友好性和系统的易用性。

2. 后端开发后端使用Java语言进行开发,使用Socket实现实时通讯功能,使用MySQL进行用户数据的存储和管理。

四、功能实现1. 用户注册和登录功能用户可以通过系统注册新账号,并使用已有账号进行登录。

系统会对用户输入的信息进行验证,保障系统的安全性。

2. 实时聊天用户可以通过系统进行实时的文字、图片交流,确保用户之间的沟通顺畅和效率。

3. 多人群聊、私聊功能系统支持多人同时进行群聊,同时也支持用户进行私聊。

用户可以根据自己的需求选择不同的聊天方式。

4. 聊天记录存储和查看系统会将用户的聊天记录进行存储,并提供查看功能,用户可以随时查看自己的聊天记录。

3. 数据库设计设计数据库存储用户的基本信息、聊天记录等数据,确保数据的安全性和完整性。

4. 功能实现实现用户注册、登录、实时聊天、群聊、私聊等功能,并保障系统的稳定性和安全性。

六、总结本次实训项目成功设计并开发了一款功能完善的Java聊天系统,满足了用户对聊天系统的基本需求。

通过本次项目的实训,加深了我们对Java语言、数据库设计和网络通讯的理解和实践能力,为我们以后的开发工作积累了丰富的经验。

七、展望在今后的工作中,我们还可以进一步完善系统功能,例如增加语音、视频通话功能,优化系统的性能和用户体验,使系统更加满足用户的需求。

c聊天室实验报告

c聊天室实验报告

c聊天室实验报告C聊天室实验报告引言:近年来,随着互联网的迅猛发展,人们的社交方式也发生了巨大的变化。

传统的面对面交流逐渐被网络聊天取代,人们可以通过各种聊天软件与朋友、家人以及陌生人进行交流。

为了更好地了解网络聊天的特点和影响,我们进行了一项C聊天室实验。

实验目的:1. 研究网络聊天的特点和模式;2. 探讨网络聊天对人际关系的影响;3. 分析网络聊天对个人心理状态的影响。

实验过程:我们在实验室中创建了一个C聊天室,邀请了一些志愿者参与。

志愿者们通过该聊天室进行交流,并记录他们的聊天内容、时间和心理感受。

实验持续了一周时间,每天志愿者们都会在特定时间段内进行聊天。

实验结果:1. 匿名性的影响:与传统面对面交流不同,网络聊天室中的参与者可以选择匿名身份,这种匿名性使得人们更加敢于表达自己的观点和情感。

在实验中,我们发现志愿者们在聊天室中更加开放和直接,他们更愿意分享自己的经历和感受,与陌生人建立起了亲密的关系。

2. 社交范围的扩大:网络聊天室打破了地域和时间的限制,使得人们可以与来自世界各地的人进行交流。

在实验中,我们观察到志愿者们与来自不同国家和文化背景的人进行了深入的交流,他们分享了彼此的生活经历和文化差异,这种跨越时空的交流丰富了他们的社交圈子。

3. 沟通方式的变化:与传统的面对面交流相比,网络聊天室中的沟通方式更加多样化。

通过表情符号、图片、语音和视频等多种方式,人们可以更准确地传达自己的情感和意图。

在实验中,我们发现志愿者们更喜欢使用表情符号和图片来表达自己的情感,这种非语言的沟通方式使得交流更加生动和有趣。

4. 心理状态的影响:网络聊天室的使用对个人的心理状态有一定的影响。

在实验中,我们发现志愿者们在聊天室中经历了情绪的波动,有时他们感到兴奋和愉悦,有时又感到孤独和焦虑。

这种心理状态的变化与聊天内容、聊天对象以及聊天时长等因素有关。

结论:通过C聊天室实验,我们深入了解了网络聊天的特点和影响。

仿QQ聊天系统实验报告

仿QQ聊天系统实验报告

软件工程项目实践大作业仿QQ软件的设计与实现软件工程项目实践大作业仿QQ软件的设计与实现班级:20090615学号:2009061503姓名:教师:于金峰平时成绩30分:+大作业成绩:70分:=总分:__ 成绩: _2012年6月一、项目可行研究新近一两年Android手机如雨后春笋般涨势迅猛,由此基于Android系统的应用开发也变得更加普遍,结合本次课程的学习,也为了更好的培养我们的自主开发能力,我们小组开发了这个模仿QQ的聊天系统。

二、需求阶段1.系统功能需求(1)登录功能。

(2)客户可以通过服务器转发,实现一对一和多对多聊天。

(3)实现呼叫功能。

(4)客户端程序应该可以实时显示目前其它用户的状态。

(5)应该具有易用、美观的图形界面。

2. 系统性能需求实用性:为信息交流提供方便,有效进行作业管理。

操作简单:本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。

技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。

使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。

安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。

适应性:应该能广泛应用于不同类型的企事业单位。

系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。

代码可读性好:文中的代码将尽可能简洁,易懂。

3. 系统运行需求1、移动客户端需500MHz及以上的处理器2、移动客户端需256MB及以上的ROM空间3、移动客户端需256MB及以上的RAM空间4、移动客户端需具有WiFi/GRPS网络接收模块,能正常连接到网络5、服务端需具有P4 1.6GHz及以上的处理器6、服务端需具有80GB及以上的硬板空间7、服务端需具有1GB及以上的内存空间三、设计过程1. 业务流程图业务流程图2. 功能结构图3. 数据流图(4. ER 图用户聊天记录登陆信息用户名密码验证信息登陆MN用户名密码登陆信息输入NM聊天时间聊天对象聊天内容图6 ER 图5. 后台数据库设计基于服务器跨平台运行的架构,服务器的后台数据库使用了SQL Server2005。

TCP聊天系统实验报告

TCP聊天系统实验报告

信息管理系《计算机网络》课程设计报告学生姓名:王法芝,王敏学号:***************222009602063010 专业班级:2009级信管1班成绩:指导教师:***二0一一年11 月 6 日目录一、背景分析: (3)二、需求分析: (3)三、开发流程: (5)四、具体实现过程: (5)一、客户端发送消息不能为空。

(5)二、在消息后面加上了发送消息的时间 (5)四、添加用户表情: (6)五、系统结构: (6)四、界面: (9)1、最初界面为: (9)2、聊天时的界面为: (9)六、程序的不足之处(尚未实现之处): (10)七、总结: (10)八、参考文献: (10)开发报告一、背景分析:本次实验基于VC++6.0平台,应用MFC和SOCKET编程技术,实现聊天室(chat server and client)的功能添加和功能实现。

关于WinSocket和MFC的一点理解和体会:Socket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。

WinSock以DLL的形式提供。

WinSock也是一个基于Socket模型的API,在Microsoft Windows操作系统类中使用。

Socket是网络通信过程中端点的抽象表示。

Socket在实现中以句柄的形式被创建,包含了进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

要使用socket,首先必须创建一个socket;然后,按要求配置socket;接着,按要求通过socket接收和发送数据;最后,程序关闭此socket。

实现Windows Sockets应用程序在网上的数据通信,必须在Windows 9x/NT 控制面板中的网络配置项里,添加TCP/IP协议,同时给定相应的IP地址,这些IP地址在所建的局域网中,不能有重复,一般要采用C类地址。

Windows 9x/NT带有协议。

P2P聊天实验报告

P2P聊天实验报告

成员分工:服务端文档及代码:客户端文档及代码:概要设计文档及建模和框架设计:工作量:各占34% 33% 33%概要设计说明书1.概要设计1.1需求规定本系统最终实现一个基于P2P相关技术的聊天系统,该系统由多个聊天客户端和一个中心服务器组成,各个聊天客户端可以两两相互发送消息。

目的在于设计GUI,多线程和套接字编程等。

基本功能:点对点的单人聊天;多人同时聊天;用户可以自由加入和退出。

1.2 运行环境。

1.2.1平台要求:Windows/linux1.2.2 开发及运行环境本软件是在myeclipse开发环境下开发,jdk/jre版本为1.6,开发语言为java,运行时需要java运行时环境(jre),即需要安装java虚拟机,jre版本1.6以上。

1.3基本设计概念本系统系统结构大致流程图如图:设计说明:服务器:1.服务器初始先启动,启动后服务器会开启服务器监听线程,监听客户的登录。

当客户登录后,会获得客户的相关信息,实时反馈给客户在线活跃用户列表。

2.服务器启动后,针对每个登录的客户,会启动一个服务器接收线程,如果有客户退出,则会更新在线用户列表,然后返回给各个客户端。

客户端:3.客户端初始向服务器发送登录请求,并实时从服务器端获取当前在线活跃用户列表及在线用户人数并显示;客户端若退出则向服务器发送退出消息以便服务器更新在线活跃用户列表。

4.客户端登录后,开启一个监听线程,监听其他用户经由服务器发来的消息,发来消息后则显示;同时客户在界面左侧的在线列表中选择需要聊天的对象,在输入框中编辑信息后发送,即建立于指定客户间的连接并传送消息。

1.4实现技术:本系统主要涉及socket网络编程和多线程编程技术,采用的开发语言为java。

为保证数据收发的可靠性,本系统采用面向连接的通信方式(TCP套接字)实现,具体采用流式套接字提供双向,可靠,有序且面向连接的数据流服务。

其中,Socket类用于建立套接字连接,ServerSocket类用于监听套接字连接,OutputStream类用于实现网络套接字流的发送,InputStream类用于网络套接字流的接收。

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

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

Java聊天室系统程序设计实验报告Java聊天室系统程序设计院(系):信息与通信工程系专业:计算机应用技术班级:学号:姓名:指导老师:2013/6/8第一部分:系统设计总述 ............................................................................................................................................................ 2 1.设计目的: .. (2)2.设计总体要求: ..................................................................................................................................................................... 2 3.实现目的: (2)第二部分:系统需求分析 ............................................................................................................................................................ 3 1.系统任务描述 ......................................................................................................................................................................... 3 2.系统功能分析 ......................................................................................................................................................................... 3 3.系统可行性分析 ..................................................................................................................................................................... 3 第三部分:系统设计 .................................................................................................................................................................... 4 1.系统总体结构设计 ................................................................................................................................................................. 4 2.系统主体的处理流程 .............................................................................................................................................................5 3.系统流程逻辑 ......................................................................................................................................................................... 5 第四部分:代码分析 .................................................................................................................................................................... 6 1.服务器端部分代码 ................................................................................................................................................................. 6 2.客户端部分代码 (6)第五部分:系统的具体实现 (6)界面设计 (6)第六部分:小结 .......................................................................................................................................................................... 10 第七部分:参考文献 (10)1.设计目的:1.在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计特性的理解。

聊天系统程序设计实践报告

聊天系统程序设计实践报告

程序设计实践设计报告课题名称:网络聊天程序的设计和实现学生姓名:班级:班内序号:学号:日期:1.课题概述1.1课题目标和主要内容课题实现的主要内容:本程序实现一个简单的网络聊天程序,采用客户机/服务器(Client/Server)模式,将客户端和服务端功能在一个程序中实现,运行时在不同的计算机上打开此程序即可进行聊天。

程序实现一对多,多对多聊天功能,满足聊天的基本功能。

课题目标:学会使用MFC搭建基本的对话框及基本控件的使用,了解socket套接字相关知识,实现简单聊天程序。

通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。

使用的开发平台:Microsoft Visual Studio 2010、windows7采用的主要工具:计算机、相关图书资料1.2系统的主要功能功能列表或功能框图,以及功能的简要说明。

服务器端负责指定ip地址及端口号,建立服务器,有监听、接受、发送消息等功能。

客户端通过指定的ip及端口号来连接服务器,有接受和发送消息等功能。

2. 系统设计2.1 系统总体框架包括系统框架图或层次逻辑图,设计思想等首先由服务器在指定的端口开通指定的服务,然后在客户机通过指定服务器地址、端口来连接服务器以获得指定的服务。

服务器端首先由一个服务器启动一个线程监听来自客户器的Socket连接,当服务器的Socket与客户器的Socket经过TCP协议的3次握手建立了连接后,双方就可以通过这个连接来进行信息的发送和接收,并可以进行文件的传输。

在进行程序设计时,对于多个用户连接服务器采用了多线程处理,每个客户端的Socket都启动一个线程来连接服务端的Socket,服务端的Socket接受连接后,通过一个结构体保存已经连接的客户端的地址和套接字,当客户端发送一个信息到服务端,服务器接收信息后,再从结构体中取出已保存的套接字转发所收到的信息。

客户端由客户端的Socket提出连接请求,要连接的目标是服务器端的Socket。

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结一、引言随着互联网的发展,即时通讯成为了人们日常生活中必不可少的一部分。

而Java语言作为当前最流行的程序语言之一,其庞大的社区和强大的跨平台特性让其成为了开发即时通讯软件的理想选择。

针对这一需求,我们进行了Java实训项目,完成了一个基于Java 语言的聊天系统。

本文主要对该聊天系统进行总结和说明。

二、项目简介聊天系统是一款基于Java语言的即时通讯软件,它的实现原理是使用Java Socket编程实现客户端和服务器之间的通信。

用户可以通过该聊天系统与其他任何使用该系统的用户进行即时通信,并进行聊天记录保存、文件传输等功能。

三、系统框架该聊天系统采用B/S架构,客户端使用JavaFx实现,服务器端使用Java网络编程实现。

其框架如下所示:客户端:JavaFx + Java网络编程服务器端:Java网络编程四、模块介绍1. 用户模块:用户模块是整个聊天系统的核心模块,包含用户登陆、注册、消息接收等功能。

服务器端需要对用户进行身份验证,并将用户信息存储到数据库中。

而客户端需要通过Socket连接服务器,与其他用户进行通信。

2. 消息模块:消息模块包含聊天记录、消息发送、群聊、私聊等功能。

客户端需要记录聊天记录,并将消息发送到服务器,缓存在本地并展示在用户聊天界面上。

而服务器端需要接收消息,并进行下发给对应用户的操作。

3. 文件传输模块:文件传输模块可以让用户在聊天中传输文件,包含文件选择、上传下载等功能。

该模块是服务于消息模块的,服务器端需要对文件进行存储和传输管理,客户端需要实现文件的选择和上传下载功能。

五、项目结构1. 服务器端服务器端的主要目的是接收客户端的请求并进行处理,其结构如下所示:1、UserServer:用户身份验证。

2、MsgServer:聊天记录的发送和接收处理。

3、FileServer:文件传输功能的实现。

4、DBUtils:数据库操作工具类。

2. 客户端客户端需要实现用户登录、注册、聊天、文件传输等功能,其结构如下所示:1、LoginController:登录页面的相关操作,包含用户登录和注册。

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结在Java实训中,我们成功地设计和实现了一个聊天系统。

该系统具有以下功能:用户注册、登录、加好友、发送消息等。

在设计这个系统之前,我们进行了许多需求分析的工作,确定了系统的具体功能和要求。

然后,我们设计了系统的架构,包括前端界面和后端数据库的设计。

在开发过程中,我们采用了Spring Boot框架,使用了MySQL作为后端数据库。

由于我们的系统需要进行实时通信,因此我们还使用了基于WebSocket的技术。

在实际的开发过程中,我们首先完成了用户注册和登录的功能。

用户可以通过输入用户名和密码进行注册,并在登录页面输入正确的用户名和密码进行登录。

如果登录成功,系统将会跳转到聊天界面。

如果没有注册或者用户名密码输入错误,系统会给出相应的提示信息。

接下来,我们实现了添加好友的功能。

用户可以通过输入好友的用户名来添加好友。

当用户输入好友的用户名并点击添加按钮时,系统会检查数据库中是否存在该用户。

如果存在,则将该用户添加到当前用户的好友列表中;如果不存在,则给出相应的提示信息。

我们实现了发送消息的功能。

用户可以在输入框中输入消息,并点击发送按钮来发送消息。

在点击发送按钮后,用户的好友列表中的用户会收到消息。

用户可以选择查看已发送和已接受的消息。

在整个开发过程中,我们遇到了许多问题,并从中学到了许多经验。

我们学会了如何进行需求分析,如何将需求转化为具体的功能和要求。

我们学会了如何设计系统的架构,并根据架构来进行具体的开发工作。

我们学会了如何解决问题和调试程序,在遇到问题时能够快速找到解决方法。

通过这个实训项目,我们不仅学到了Java语言和Spring Boot框架的相关知识,还学会了团队合作和项目管理的技巧。

我们在与团队成员的合作中学会了沟通和协调的重要性,以及如何高效地分工合作。

在整个项目过程中,我们对实际的软件开发流程有了更深入的了解,提高了我们的编程能力和解决问题的能力。

聊天类程序实验报告

聊天类程序实验报告

一、实验目的1. 熟悉Python编程语言的基本语法和常用库。

2. 掌握网络编程的基本原理和TCP/IP协议。

3. 学习使用socket编程实现客户端和服务器端的数据交互。

4. 提高团队协作能力和编程实践能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm4. 网络环境:局域网或互联网三、实验内容本次实验设计了一个简单的聊天类程序,包括客户端和服务器端。

客户端用于发送和接收消息,服务器端用于接收客户端发送的消息并广播给所有客户端。

1. 服务器端程序服务器端程序负责监听客户端的连接请求,接收客户端发送的消息,并将消息广播给所有已连接的客户端。

```pythonimport socketimport threading# 定义服务器地址和端口server_address = ('localhost', 12345)# 创建socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定地址和端口server_socket.bind(server_address)# 设置最大连接数server_socket.listen(5)print("服务器启动,等待客户端连接...")def broadcast_message(message, clients):"""将消息广播给所有已连接的客户端"""for client in clients:try:client.send(message.encode('utf-8'))except:client.close()clients.remove(client)def handle_client(client_socket, clients):"""处理客户端连接"""while True:try:message = client_socket.recv(1024).decode('utf-8') if message:broadcast_message(message, clients)else:breakexcept:break# 存储所有已连接的客户端clients = []try:while True:client_socket, client_address = server_socket.accept()print(f"连接成功,客户端地址:{client_address}")clients.append(client_socket)client_thread = threading.Thread(target=handle_client, args=(client_socket, clients))client_thread.start()except KeyboardInterrupt:print("服务器关闭")finally:server_socket.close()```2. 客户端程序客户端程序负责连接服务器,发送和接收消息。

局域网聊天程序实验报告

局域网聊天程序实验报告

局域网聊天程序实验报告本程序是专门为局域网而建立的聊天程序,它功能有限只能用于局域网聊天当中,下面我具体介绍它的功能:(1)主界面:(2)操作方法:(注:必须要装VC++才能够运行本程序)1.首先要在每个机器上都装上我们的聊天程序的服务端2.然后再选择设置里面的建立服务器,这样就可以向群内发送消息了,在发送消息之前,必须要输入接受者姓名,不然消息将不能发送成功.3.如果不知道接受者姓名者,可以选择在线用户来查看局域网内在线的用户.然后选在上面双击该用户,或者在接受者右边的文本框中输入接受者姓名即可向该用户发送消息了.4.退出程序选择设置里面的退出即可.(3)程序简单操作流程:(3)大概通信流程:(5)程序代码:1.建立服务器代码:void CMyNetChatDlg::OnCreathost() //create host{if(m_hSocket!=NULL){closesocket(m_hSocket);m_hSocket=NULL;}if(m_hSocket==NULL){m_hSocket=socket(AF_INET,SOCK_STREAM,0);ASSERT(m_hSocket!=NULL);}UpdateData(TRUE);m_addr.sin_addr.S_un.S_addr=INADDR_ANY;m_addr.sin_family=AF_INET;m_addr.sin_port=htons(52428);int ret=0;ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));if(ret==SOCKET_ERROR){closesocket(m_hSocket);AfxMessageBox("Bind Error");return ;}ret=listen(m_hSocket,12);if(ret==SOCKET_ERROR){closesocket(m_hSocket);AfxMessageBox("Listen Error");return ;}AfxBeginThread(AcceptThread,NULL);}代码功能就是在整个局域网中建与其它计算机建立连接,使其它计算机能够访问本机上的内容,以及向本机发送消息等功能,其主要原理就是通过建立工作组来完成的.2下面我们来看下发送消息代码:void CMyNetChatDlg::OnSended(){// send message to hostm_showname.GetWindowText(m_name);if(m_name.IsEmpty()){AfxMessageBox("请选择发送用户");return;}strname=GetIP(m_name);if(m_cSocket!=NULL){closesocket(m_cSocket);m_cSocket=NULL;}if(m_cSocket==NULL){m_cSocket=socket(AF_INET,SOCK_STREAM,0);ASSERT(m_cSocket!=NULL);}UpdateData(TRUE);m_caddr.sin_addr.S_un.S_addr=inet_addr(strname);m_caddr.sin_family=AF_INET;m_caddr.sin_port=htons(52428);int ret=0;int caddrlength=sizeof(m_caddr);ret=connect(m_cSocket,(LPSOCKADDR)&m_caddr,caddrlength); if(ret==SOCKET_ERROR){connectFlag=FALSE;int err=WSAGetLastError();if(err==10061)AfxMessageBox(_T("服务器未打开"));return ;}connectFlag=TRUE;if(connectFlag==TRUE){m_send.GetWindowText(m_sendstr);if(m_sendstr.IsEmpty()){AfxMessageBox(_T("不能发空消息!"));return;}CString sendstr;char *sendbuf=NULL;sendstr+=char(changstr.GetLength());sendstr+=changstr;sendstr+=char(m_sendstr.GetLength());sendstr+=m_sendstr;sendbuf=sendstr.GetBuffer(0);sendstr.ReleaseBuffer(-1);int slength;slength=send(m_cSocket,sendbuf,sendstr.GetLength(),0);if(slength!=sendstr.GetLength()||m_cSocket==SOCKET_ERROR){int errs=WSAGetLastError();AfxMessageBox(_T("发送消息失败"));return ;}m_send.SetWindowText("");return ;}AfxMessageBox(_T("请先连接"));}在建立了服务器了就能向HOST内的用户发送消息,在没有建立服务器的前提下是不能向HOST内的用户发送消息.还有如果发送空消息系统也会提示出错的.3.如何查看在线用户看在线用户的方法很简单就是用GetLanActiveComputer();这个函数来完成实现的,另外还可以用sleep()来控制在线用户的数量.以上及是本程序的所有功能及简略代码,由于时间关系,本系统的功能还不够强大,需要进一步改善,不过它基本上能够实现局域网内部聊天.而且在应用领域也比较方便,用户操作起来非常的方便,所以,它的实用性还是很强的,再加强一下它的功能,就基本上完善了.。

Java聊天系统实训报告

Java聊天系统实训报告

Java聊天系统实训报告一、实训目的:1、理解C/S模式的软件系统结构,掌握网络编程的基本概念;2、了解Java 的多线程机制,掌握Java多线程技术的应用;3、熟练掌握基于TCP协议的Socket编程;4、熟练掌握基于UDP协议的Socket编程;5、了解Socket编程的协议约定以及信息交互方法;二、实训要求:使用JBuilder提供的组件及网络包,开发一个实用的C/S模式聊天室系统。

(1)功能要求要求该系统由客户端及服务器端两部分组成。

(2)系统界面要求:要求系统具有友好的用户界面,界面简洁、操作方便;本程序客户端主要完成了:1. 客户端发送信息可以广播客户。

2. 广播客户,则将信息转发到所有客户端。

服务器主要完成了:客户-服务器之间信息的交互。

例如hello发送信息到服务器,服务器将信息转发到所有与之连接的客户(hello、boy),通过这种形式,就可以实现客户之间的信息广播。

本程序可以实现发送信息广播,只要进入客户端都可以看到消息,本程序采用了流的概念,java多线程,Socket应用程序中用到的代码如下客户端代码:import java.awt.*;import java.awt.event.*;import java.io.*;import .*;public class Login implements ActionListener{private static final ActionListener WindowAdapter = null;private Frame f;private TextField tf;private Label l;private String tfContent="";public Login(){f = new Frame("欢迎登陆本程序...按enter键直接登录");l = new Label("请输入你的名字");tf = new TextField(20);f.setLayout(new FlowLayout());f.add(l);f.add(tf);f.pack();f.show();tf.addActionListener(this);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){System.out.println ("ft clicked");tfContent = tf.getText();ClientFrame cf = new ClientFrame(tfContent);f.dispose();}public static void main(String[] args){new Login();}}class ClientFrame extends Thread implements ActionListener{private Frame f;private TextField tf;private Button btn;TextArea ta;private Panel pup;String data;BufferedReader InputS;PrintStream OutputS;String name;ClientFrame(String str){name = str;Socket client;try {client = new Socket("localhost",6000);InputS = new BufferedReader(new InputStreamReader(client.getInputStream()));OutputS = new PrintStream(client.getOutputStream(),true);}catch (Exception ex) {ex.printStackTrace();}OutputS.println("欢迎" + name + "光临");f = new Frame("客户端");tf = new TextField(30);tf.addActionListener(this);btn = new Button("发送");ta = new TextArea();pup = new Panel();f.setLayout(new BorderLayout());f.add(pup,BorderLayout.NORTH);pup.add(tf);pup.add(btn);f.add(ta);f.pack();f.setSize(400,300);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){OutputS.println(name + "已经离开");System.exit(0);}});btn.addActionListener(this);f. show();this.start();}public void run(){try {while(true){System.out.println ("正在监听端口...");OutputS.println("\u0001");ta.setText(InputS.readLine().replaceAll("\u0001","\n"));Thread.sleep(1000);}}catch (Exception ex) {ex.printStackTrace();}}public void actionPerformed(ActionEvent e){String cmd = e.getActionCommand();if (cmd.equals("发送")){System.out.println ("发送clicked");data = tf.getText();try {OutputS.println(name + "说:" + data);ta.setText(InputS.readLine().replaceAll("\u0001","\n"));}catch (Exception ex) {ex.printStackTrace();}tf.setText("");}else{System.out.println ("发送clicked");data = tf.getText();try {OutputS.println(name + "说:" + data);ta.setText(InputS.readLine().replaceAll("\u0001","\n"));}catch (Exception ex) {ex.printStackTrace();}tf.setText("");}}}运行结果如下图:服务器代码如下:import java.io.*;import java.awt.*;import java.awt.event.*;import .*;import java.util.ArrayList;public class ServerFrame implements ActionListener{private Frame f;private TextArea ta;private MenuBar mb;private MenuItem start;private Menu m;boolean isStop;static ArrayList clients;ServerFrame() {f = new Frame("java聊天系统服务器");ta = new TextArea();mb = new MenuBar();m = new Menu("服务器管理");start = new MenuItem("启动服务器");mb.add(m);m.add(start);start.addActionListener(this);f.setMenuBar(mb);f.add(ta);f.setSize(260, 60);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});f.show();}public void actionPerformed(ActionEvent e)//该方法用来对发生在按钮上的事件进行处理{String cmd = e.getActionCommand();if (cmd.equals("启动服务器")) {System.out.println("初始化中...");try {System.out.println("服务器已经启动");ServerSocket server = new ServerSocket(6000);while(!isStop){Socket Client = server.accept();Service ss = new Service(Client);}}catch (Exception ex) {ex.printStackTrace();}}}public static void main(String[] args) {new ServerFrame();}}class Service extends Thread{String data;BufferedReader InputS;PrintStream OutputS;Socket Client;static String Content="";public Service(Socket ClientSocket) throws Exception{Client = ClientSocket;try {InputS = new BufferedReader(new InputStreamReader(Client.getInputStream()));OutputS = new PrintStream( Client.getOutputStream(),true);}catch (Exception ex) {System.out.println("不能连接客户端!");return;}this.start();}public void run() {System.out.println (this);try {while(true){data = InputS.readLine();if(data.equals("\u0001")){OutputS.println(Content);}else{Content = data +"\u0001"+ Content;System.out.println (Content);if (Content==null) break;else{OutputS.println(Content);System.out.println("From Client: " + Content);}}}Client.close();}catch (Exception ex) {ex.printStackTrace();}try {Client.close();}catch (Exception ex) {ex.printStackTrace();}}}运行结果如下图:实验中遇到的问题:1、图形用户界面设计按钮和文本框设计中的按钮上的事件处理问题2、输入流输出流的问题3、监听端口的问题解决:1、通过java语言程序设计(第2版)中第五章中的5.2事件和事件处理知道了具体事件的处理是使用事件对应的监听者接口中所提供的抽象方法,这些方法需要重新定义,例如本程序中public void actionPerformed(ActionEvent e),该方法用来对对发生在按钮上事件的处理。

(完整word版)JAVA聊天室实验报告

(完整word版)JAVA聊天室实验报告

Java聊天室实验报告班级: ******学号: ********姓名:***目录:一、实验目的.。

.。

...。

.。

..。

..。

....。

..。

...。

...。

...。

..。

.。

.。

3二、所需技术 .。

.。

..。

.。

..。

..。

..。

.。

.。

.。

....。

.....。

.。

.。

.。

...。

3三、需求分析。

..。

.。

.。

..。

...。

.。

..。

.。

...。

..。

.。

.。

..。

3四、系统设计 .。

..。

.......。

...。

.。

....。

...。

.。

...。

....。

..。

.....。

.41、服务器结构 ..。

.。

..。

...。

.。

.。

.。

.。

...。

.....。

.。

.。

.。

42、客户端结构 ..。

.。

.....。

..。

...。

.。

..。

.。

.。

...。

.。

..。

.。

.。

4五、实现细节。

..。

...。

..。

...。

.....。

..。

..。

.。

....。

..。

..51、客户端细节。

.。

..。

.。

...。

..。

.。

..。

...。

..。

..。

.。

52、服务器细节 .。

.。

.。

....。

.。

.。

..。

.。

.。

..。

..。

..。

..。

.。

.。

..6六、系统展示。

...。

.。

.。

.。

.。

.。

.。

.。

.。

..。

..。

..。

..。

..。

.。

(7)七、实验小结。

.。

....。

..。

....。

.。

.。

...。

..。

...。

.。

.。

.。

..。

. (9)Rain153 WeChat 聊天室系统一、实验目的:1、使用Java技术完成聊天室系统,深入学习使用Java语言。

2、使用Java 的多线程机制,深入理解Java多线程技术的应用。

3、使用GUI,对JFrame的深入学习。

4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发.5、使用C/S架构,对网络编程有一定的了解。

二、所需技术本系统要求使用java技术开发。

所需知识包括java程序设计语言、swing基本GUI组件、多线程编程、socket编程、集成开发环境使用eclipse。

聊天软件实验报告08信管2班张海军41

聊天软件实验报告08信管2班张海军41

聊天软件设计实验报告作者:张海军_ 专业:08信息管理与信息系统班级:08级信管2班_______ 学号:222008362063041____ 成绩:指导教师:杜治国__________目录1.作业背景 (3)2.系统开发工作分配 (3)3.系统测试………………………………. (3-4)4.系统运行及部分代码………………………………. (4-25)5.系统评价 (25)6.自我总结 (26)一、作业背景1、实验原理:(1)Windows Socket和套接口的基本概念网际协议(Internet Protocol,IP)是一种用于互联网的网络协议,已广为人知。

它可广泛用于大多数计算机操作系统上,也可用于大多数局域网LAN(比如办公室小型网络)和广域网W AN(比如说互联网)。

从它的设计看来,IP是一个无连接的协议,并不能保证数据投递万无一失。

两个上层协议(TCP和UDP)依赖IP 协议进行数据通信。

如果希望在Microsoft Windows下通过TCP和UDP协议建立网络应用程序,则需要使用Winsock套接口编程技术。

套接口,就是一个指向传输提供者的句柄。

Win32中,套接口不同于文件描述符,所以它是一个独立的类型——SOCKET。

Windows Sockets描述定义了一个Microsoft Windows的网络编程界面,它是从Unix Socket 的基础上发展而来的,为Windows TCP/IP 提供了一个BSD型的套接字规范,除与4.3BSD Unix Sockets完全兼容外,还包括一个扩充文件,通过一组附加的 A PI实现Windows 式(即事件驱动)的编程风格;而Winsock则是在Microsoft Windows 中进行网络应用程序设计的接口。

Windows在Internet支配域中的TCP/IP协议定义了Winsock网络编程规范,融入了许多新特点。

使用Socket的目的是使用户在网络协议上工作而不必对该网络协议有非常深入的了解。

聊天系统实验报告

聊天系统实验报告

河北大学工商学院实验报告学部:理工学部课程名称:软件工程工具实验项目:聊天系统专业班级:姓名:学号:实验地点:B3-403指导教师:杨柳成绩:1 实验目的(1)解决工作和生活中的信息交流不便的弊端。

(2)掌握基于Socket的聊天程序的设计方法。

(3)使用C/S构架,对网络编程有一定的了解。

2 实验要求(1)使用Socket异步套接字进行通信,实现点对点发送消息的功能。

3 实验内容3.1 系统概述为了解决工作和生活中信息交流不变的弊端,设计和实现一个基于C/S结构的聊天系统。

本系统使用Socket异步套接字进行通信,实现点对点发送消息的功能。

该系统包括服务器端和客户端,服务器端的主要功能是使用Socket监听本机的端口,如果有连接请求则创建Socket连接,而客户端在使用时需要对服务器的端口发出请求,如果服务器存在,则建立连接,实现服务器端和客服端之间的通信。

3.2 系统分析与设计(1)使用前首先建立Socket连接。

(2)服务器端与客户端之间的信息发送是该系统最基本的功能。

(3)在C/S模式中,服务器与客户端是相互依赖的。

(4)服务器端与客户端的聊天信息在界面的显示应按照用户的要求进行格式处理,这样更易于用户查看。

3.3 系统实现与测试系统用例图:系统时序图:发送消息结束消息Server.java①单击启动按钮事件若服务器已启动则提示错误。

若正常,启动服务器。

public void serverStart(int max, int port) throws .BindException ;当端口号被占用则提示错误信息,若没有错误,则进行以下代码,启动服务器。

clients=new ArrayList<ClientThread>();serverSocket=new ServerSocket(port);serverThread=new ServerThread(serverSocket,max); serverThread.start();isStart=true;②单击停止按钮停止服务器,若服务器未曾启动或停止失败则报错关闭服务器的方法public void closeServer()停止服务器线程,并给所有在线用户发送关闭命令,释放资源,停止此条为客户端服务的线程,关闭服务器端连接清空用户列表③群发服务器消息public void sendServerMessage(String message){for(int i=clients.size() - 1;i>=0;i--){clients.get(i).getWriter().println("服务器:"+message+"(多人发送)"); clients.get(i).getWriter().flush();}}④服务器线程class ServerThread extends Thread{}内含构造方法和run方法public void run(){while(true){//try{Socket socket=serverSocket.accept();服务器不停的等待客户端的链接。

2019年聊天室系统实训总结

2019年聊天室系统实训总结

聊天室系统实训总结聊天室系统实训总结,沟通是很重要的,下面是带来的聊天室系统实训总结,欢迎阅读!聊天室系统实训总结【1】在编写JAVA聊天室的过程中,让我学到了很多东西,有知识方面的,而更多的是经验。

从以前学习C,到现学习JAVA,有很多的地方不习惯。

主要的就是思想不会转变。

但是还是有很多相似的地方,比如,如何实现心中所想的东西时,很多函数的编写的方法是类似的,而不同的是JAVA多了继承、多态、封装等等面向对象的东西。

所以在整体构思方面差异比较大,但是细节方面还是类似的。

编写聊天室让我对面向对象的了解算是更进一步了。

首先:聊天室实现的就是聊天;用户与用户之间实现聊天的功能。

然后:对于聊天这个功能如何实现呢?1、要实现用户与用户之间的交流,必须要有一个通信实体做出“主动姿态”,主动接受来自其他通信实体的连接请求。

这就是服务端。

2、客户端——用于连接到服务端,然后实现用户之间的通信。

所以这里的服务器和客户端便是两个对象,它们能实现用户之间的通信。

对于总体的构思擦不多就是这样。

所以现在需要的便是一步一步的细化下去。

一、服务端a)服务端如何实现主动接受其他通信实体的连接请求?b)如何实现客户端之间信息的收发?c)服务端应该有些什么样的功能呢?二、客户端a)如何连接到服务端?b)客户端应该有些什么样的功能?当慢慢的思考下去,思想便会慢慢的清楚。

再开始编写的时候,其实头是乱的,摸不着头绪,因为那时候开始的时候便在想:如何写连接?如何写收发信息?如何写连接?等等。

也许这就是学C的时候的习惯思想,那时候写过的最大的程序便是俄罗斯方块,其余的便是在搞算法。

不过当自己慢慢的习惯JAVA的编程思想之后,便是好多了。

对于服务端和客户端的设计1、服务器端的主要功能:a)在特定的端口上进行监听,等待客户端连接。

b)默认端口为30000。

c)向已经连接到服务的用户发送系统消息。

d)统计在线人数。

e)当停止服务器时,断开所有的用户连接。

java实训聊天系统报告总结3篇

java实训聊天系统报告总结3篇

java实训聊天系统报告总结3篇Report summary of java training chat system汇报人:JinTai Collegejava实训聊天系统报告总结3篇前言:报告是按照上级部署或工作计划,每完成一项任务,一般都要向上级写报告,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想等,以取得上级领导部门的指导。

本文档根据申请报告内容要求展开说明,具有实践指导意义,便于学习和使用,本文档下载后内容可按需编辑修改及打印。

本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】1、篇章1:java实训聊天系统报告总结2、篇章2:java实训聊天系统报告总结3、篇章3:java实训聊天系统报告总结篇章1:java实训聊天系统报告总结经过三个星期的学习,我们终于把这个图书馆管理系统做出来了,虽然做得不是很完美,但是却是我们这个小组的每一个成员辛苦了三个星期的成果,我们为此感到开心。

说实话,我们这一组的JAVA都学得不是很好,上课也听得不是很明白,所以在刚开始做的时候,我们每一个人都认为这是一个不可能完成的任务,刚开始我们也想过要放弃,想想这么难怎么可能完成呢!可是后来看到其他组都在认真的做任务,我们想想也不能这样放弃,至少也得试试,如果不会的话,再去请教会的人,学习不就是从不会到会的!于是第一个星期我们把任务分配好了,但是这一周我们把大部分的时间浪费了,也没有做出来什么,只是把一个简单的界面做好了。

不过我们也很开心了,因为至少是我们自己做出来的,虽然没有太完善。

第二个星期我们开始做每一个版块的功能模块,一共要完成三个版块,我们六个人分成两组我们这组要完成最近一个系统维护版块,这个版块包括两大模块,更改密码和用户管理,而我个人主要负责的是用户管理这个版块。

在实训的过程中我们还学到了JAVA的图形化界面。

这让我们很轻松的就能把一个界面弄出来,而不需要让我们打很我繁琐的程序代码,当然我的这个模块的界面我花了半天就做出来了,做出来之后,接下来就是接监听,这对我来说是一个难点,起初我是一点也不会的,自己看书也只是看得懂,但也编不出来,当时我很着急,看到人家都做出来了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北大学工商学院实验报告学部:理工学部课程名称:软件工程工具实验项目:聊天系统专业班级:姓名:学号:实验地点:B3-403指导教师:杨柳成绩:1 实验目的(1)解决工作和生活中的信息交流不便的弊端。

(2)掌握基于Socket的聊天程序的设计方法。

(3)使用C/S构架,对网络编程有一定的了解。

2 实验要求(1)使用Socket异步套接字进行通信,实现点对点发送消息的功能。

3 实验内容3.1 系统概述为了解决工作和生活中信息交流不变的弊端,设计和实现一个基于C/S结构的聊天系统。

本系统使用Socket异步套接字进行通信,实现点对点发送消息的功能。

该系统包括服务器端和客户端,服务器端的主要功能是使用Socket监听本机的端口,如果有连接请求则创建Socket连接,而客户端在使用时需要对服务器的端口发出请求,如果服务器存在,则建立连接,实现服务器端和客服端之间的通信。

3.2 系统分析与设计(1)使用前首先建立Socket连接。

(2)服务器端与客户端之间的信息发送是该系统最基本的功能。

(3)在C/S模式中,服务器与客户端是相互依赖的。

(4)服务器端与客户端的聊天信息在界面的显示应按照用户的要求进行格式处理,这样更易于用户查看。

3.3 系统实现与测试系统用例图:系统时序图:发送消息结束消息Server.java①单击启动按钮事件若服务器已启动则提示错误。

若正常,启动服务器。

public void serverStart(int max, int port) throws .BindException ;当端口号被占用则提示错误信息,若没有错误,则进行以下代码,启动服务器。

clients=new ArrayList<ClientThread>();serverSocket=new ServerSocket(port);serverThread=new ServerThread(serverSocket,max); serverThread.start();isStart=true;②单击停止按钮停止服务器,若服务器未曾启动或停止失败则报错关闭服务器的方法public void closeServer()停止服务器线程,并给所有在线用户发送关闭命令,释放资源,停止此条为客户端服务的线程,关闭服务器端连接清空用户列表③群发服务器消息public void sendServerMessage(String message){for(int i=clients.size() - 1;i>=0;i--){clients.get(i).getWriter().println("服务器:"+message+"(多人发送)"); clients.get(i).getWriter().flush();}}④服务器线程class ServerThread extends Thread{}内含构造方法和run方法public void run(){while(true){//try{Socket socket=serverSocket.accept();服务器不停的等待客户端的链接。

如果已达人数上限,提示“服务器在线人数已达上限,请稍后尝试连接”,并释放资源若符合要求,则开启对此客户端服务的线程ClientThread client=new ClientThread(socket);client.start();clients.add(client);listModel.addElement(client.getUser().getName());contentArea.append(client.getUser().getName()+client.getUser().getIp() +"上线!\r\n");为一个客户端服务的线程class ClientThread extends Thread {客户端线程的构造方法接收客户端的基本用户信息,反馈连接成功信息,反馈当前在线用户信息向所有在线用户发送该用户上线命令run方法不断接收客户端的消息,进行处理。

下线命令断开连接释放资源,向所有在线用户发送该用户的下线命令更新在线列表,删除此条客户端服务线程⑤执行消息发送函数send()public void send() ;服务器还未启动或没有用户在线时,不能发送消息,提示错误。

消息不为空时将消息群发。

⑥转发消息dispatcherMessage()public void dispatcherMessage(String message){StringTokenizer stringTokenizer=new StringTokenizer(message,"@"); String source=stringTokenizer.nextToken();String owner=stringTokenizer.nextToken();String content=stringTokenizer.nextToken();message=source+"说:"+content;contentArea.append(message+"\r\n");if(owner.equals("ALL")){//群发for(int i=clients.size() - 1;i>=0;i--){clients.get(i).getWriter().println(message+"(多人发送)");clients.get(i).getWriter().flush();}}}}}Client.java1.Send()函数如果没有连接服务器时,不能发送消息,弹出提示;若服务器已连接,则判断消息是否为空,消息为空则提示错误信息,不为空时调用sendMessage()函数将消息发出,textField清空。

public void send() { if (!isConnected) {JOptionPane.showMessageDialog(frame, "还没有连接服务器,无法发送消息!", "错误",JOptionPane.ERROR_MESSAGE);return;}String message = textField.getText().trim();if (message == null || message.equals("")) {JOptionPane.showMessageDialog(frame, "消息不能为空!", "错误",JOptionPane.ERROR_MESSAGE);return;}sendMessage(frame.getTitle() + "@" + "ALL" + "@" + message);textField.setText(null);}2.单击连接按钮时事件单击连接按钮时,如果处于连接上状态,则提示不能重复链接。

if (isConnected) {JOptionPane.showMessageDialog(frame, "已处于连接上状态,不要重复连接!","错误", JOptionPane.ERROR_MESSAGE);return;}判断端口、IP地址、姓名是否为空,如果为空,抛出异常,提示错误信息,否则提示连接成功。

3.单击断开按钮时事件单击断开按钮时,如果处于断开上状态,则提示不能重复断开抛出异常,通过设置flag调用closeConnection()调用判断服务器是否成功断开。

btn_stop.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (!isConnected) {JOptionPane.showMessageDialog(frame, "已处于断开状态,不要重复断开!","错误", JOptionPane.ERROR_MESSAGE);return;}try {boolean flag = closeConnection();// 断开连接if (flag == false) {throw new Exception("断开连接发生异常!");}JOptionPane.showMessageDialog(frame, "成功断开!");} catch (Exception exc) {JOptionPane.showMessageDialog(frame,exc.getMessage(),"错误", JOptionPane.ERROR_MESSAGE);}}});4.单击发送按钮事件直接调用send()函数,完成发送。

btn_send.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {send();}});5.连接服务器函数connectServer()socket描述IP地址和端口,根据端口号和服务器ip建立连接,是一个通信链的句柄。

getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例,赋值给writer, getOutputStream 方法连接的另一端将得到输入,同时返回一个OutputStream对象实例,赋给reader。

socket = new Socket(hostIp, port);//writer = new PrintWriter(socket.getOutputStream());reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));接着通过sendMessage()函数发送客户端用户基本信息(用户名和ip 地址),开启接收消息的线程,调用start()函数,如果连接成功,返回TRUE,messageThread = new MessageThread(reader, textArea);messageThread.start();isConnected = true;// 已经连接上了return true;否则补货,返回FALSE。

相关文档
最新文档