基于Socket仿微信系统网络应用课程设计报告
基于Socket网络聊天系统的设计与实现
![基于Socket网络聊天系统的设计与实现](https://img.taocdn.com/s3/m/ded279f7bcd126fff6050b37.png)
摘要随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活。
开发并实现具有自身特色的网络聊天系统具有实际应用价值。
本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。
系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。
系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。
总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。
【关键词】网络聊天服务器模块客户端模块 SocketABSTRACTWith the rapid development of Internet, network chat with its simple operation, convenient and gond privacy has quickly become the most popular way of communication networks, more and more people like it, enrich people's online lives. Development and Realization of the network chat system with its own characteristics and has practical application value.The Internet chat system is based on Java application, designed by Client / Server as the development of models, as Eclipse development environment, MySQL as the backend database, and using JDBC to connect database. The system includes server modules and client modules, server module can match users'data, read and forward the information which is sent by client; client module to regist, login, chat and file transfer. The system not only achieves peer-to-peer chat, but also use the Java provids Socket class and multi-threading capabilities, in a single program run different processes at the same time, in order to achieve multipoint chat.In short, the chat system is open, real-time and multi-topic staggered features, easy for people to communicate online.【Key words】Network Chat Client Module Server Module Socket目录前言 (1)第一章系统开发工具简介 (2)第一节客户机/服务器模型 (2)第二节JA V A简介 (3)第三节Socket简介 (4)第四节Eclipse简介 (7)第五节MySQL简介 (8)本章小结 (9)第二章系统分析 (10)第一节可行性分析 (10)第二节业务流分析 (11)第三节需求分析 (11)一、系统设计目标 (11)二、系统功能需求 (12)本章小结 (13)第三章系统概要设计 (14)第一节系统总体描述 (14)第二节模块设计 (15)第三节数据库设计 (16)一、设计原则 (16)二、具体步骤 (17)本章小结 (18)第四章系统实现 (20)第一节数据库模块实现 (20)一、数据流图 (20)二、数据库的连接 (20)第二节注册模块实现 (21)第三节登录模块实现 (23)第四节聊天模块实现 (24)第五节文件传输模块实现 (25)本章小结 (27)第五章系统测试 (28)第一节服务器模块测试 (28)第二节注册模块测试 (29)第三节登录模块测试 (30)第四节聊天模块测试 (31)第五节文件传输模块测试 (32)本章小结 (34)总结 (35)致谢 (36)参考文献 (37)附录 (38)一、英文原文 (38)二、英文翻译 (41)前言随着互联网的快速发展,网络聊天软件以它的实时性、高效率和低成本的特质充当了信息交流的媒介,并逐渐成为网络商圈和生活商圈中不可或缺的组成部分[1]。
基于Socket编程的网络应用软件设计
![基于Socket编程的网络应用软件设计](https://img.taocdn.com/s3/m/5f8651d1e109581b6bd97f19227916888486b9ac.png)
基于Socket编程的网络应用软件设计一、引言随着互联网的飞速发展,越来越多的人开始意识到网络的重要性。
在这个信息爆炸的时代,网络已经成为人们获取信息、交流沟通、娱乐消遣的重要手段。
为了更好地满足人们的需求,网络应用软件的设计越来越受到人们的关注。
其中,基于Socket编程的网络应用软件设计是一种常见的设计方式,本文将介绍这种设计方式的基本概念、原理和实现方法。
二、基本概念Socket(套接字)是一种网络通信协议,用于实现不同主机之间的通信。
套接字的主要作用是传输数据,因此它通常被用来构建各种类型的网络应用程序。
在基于Socket编程的网络应用软件设计中,套接字是通信双方之间的一个“窗口”,通过这个窗口,双方可以通过网络进行数据传输。
每个套接字都有一个唯一的标识符(IP地址和端口号),它们用来标识发送和接收的数据包。
在使用Socket进行网络通信时,需要指定套接字的类型(UDP或TCP)、协议类型(IPV4或IPV6)和连接地址等信息。
三、基本原理基于Socket编程的网络应用软件设计原理有两个,一是客户端和服务器端之间的通信,二是数据交换与传输。
客户端和服务器端之间的通信:客户端通过套接字向服务器发送请求,服务器接收请求并返回响应,这个过程叫做客户端和服务器端之间的通信。
客户端和服务器端之间的通信可以通过TCP或UDP协议来完成。
数据交换与传输:数据交换与传输是Socket编程的核心内容,也是实现网络通信的基础。
数据交换和传输可以分为两种方式:流式传输和报文传输。
流式传输:使用TCP协议时,数据是以字节流的形式进行传输的。
发送方将数据按照字节的形式发送到网络中,接收方再将其按照同样的字节顺序接收。
由于TCP协议使用了可靠的连接,因此数据传输的顺序不会出现错误。
报文传输:使用UDP协议时,数据是以报文的形式进行传输的。
每个数据包都有一个独立的标识符,接收方可以根据这个标识符来解析数据包。
由于UDP协议不保证数据传输的可靠性和顺序,因此在数据传输过程中需要特别注意。
网络编程课程设计报告AndroidSocket聊天室
![网络编程课程设计报告AndroidSocket聊天室](https://img.taocdn.com/s3/m/dedc885516fc700aba68fc3b.png)
网络编程课程设计报告课程名称 java程序设计之网络编程题目 Android Socket 聊天室专业信息管理与信息系统班级组长副组长组员指导教师目录5.一、设计目的随着人们对手机的依赖程度越来越深和人们相互之间的交流越来越多,开发一款手机聊天软件便显得尤为重要。
我组开发的手机聊天软件-Android Socket 聊天室不仅可以让人们相互之间的交流变得越来越便捷,而且通过对Android Socket 聊天室的开发,使得我们能更好的掌握网络编程知识,锻炼自己的java编程能力。
二、开发工具和开发环境1、开发工具: Eclipse2、开发环境:JDK三、设计原理1、实现思想Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。
一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
2、服务器端工作流程(1)创建服务器端套接字并绑定到一个端口上(2)套接字设置监听模式等待连接请求(3)接受连接请求后进行通信(4)返回,等待赢一个连接请求3、客户端工作流程(1)创建客户端套接字(指定服务器端IP地址与端口号)(2)连接(Android 创建Socket会自动连接)(3)与服务器端进行通信(4)关闭套接字四、系统流程图五、系统设计本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。
并根据消息做出不同的动作。
1、系统功能该系统实现了用户之间的点对点单人聊天,在线用户之间的群聊。
在客户端和服务器端都可以查看历史消息、保存消息、清空消息。
为了监控用户之间的状态,服务器还可以实现踢掉用户的功能,同时用户时间文件传输的信息都会在服务器上显示。
2、系统架构1)选择传输控制协议TCP,使用Java的Socket编程机制,分别建立客户端与服务器端;2)分别设计客户端与服务器端的界面,客户端使用的是用安卓开发界面。
基于Socket的网络聊天程序设计报告
![基于Socket的网络聊天程序设计报告](https://img.taocdn.com/s3/m/5386da383968011ca30091c7.png)
学生学号实验课成绩武汉理工大学学生实验报告书实验课程名称高性能计算机网络实验题目基于Socket的网络聊天程序设计指导老师姓名学生姓名学生专业班级2011 —2012 学年第一学期实验课程名称:高性能计算机网络第一部分:实验分析与设计一、实验内容描述(问题域描述)内容:综合运用网络协议、编程语言、API和图形界面实现基于socket建立、监听、连接、发送数据和接收数据的网络通信程序。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)本程序采用基于面向无连接的UDP协议。
需要用到的函数有bind()、 sendto()、 recvfrom()等设计一个基本的网络服务器有以下几个步骤:1、初始化Windows Socket2、创建一个监听的Socket3、设置服务器地址信息,并将监听端口绑定到这个地址上4、开始监听5、接受客户端连接6、和客户端通信7、结束服务并清理Windows Socket和相关数据,或者返回第4步客户端程序框架类似三、主要仪器设备及耗材Windows XP 操作平台Microsoft Visual C++ 6.0 开发环境第二部分:实验调试与结果分析一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)上机前编写好代码,用VC 6.0 编译时发现出现链接错误二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)经分析,应该在“工程”-“设置”-“连接”下的“对象/库模块”中添加“ws2_32.lib”在运行时应该先启动服务器端程序,再启动客户端程序。
源代码以及运行结果截图见附页。
三、实验小结、建议及体会通过本次实验,巩固了自己的编程能力,把课堂上学习到的通信协议用到了实践中,对于各种通信协议的理解很有好处。
不足的的对于图形界面编程能力不足,今后应该在这方面多多下功夫。
服务器端代码:#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); //设置端口号为6666 bind(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();}客户端代码:#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();}运行结果截图:。
基于Socket的网络聊天系统的开发与设计
![基于Socket的网络聊天系统的开发与设计](https://img.taocdn.com/s3/m/dc2cc9fc0975f46527d3e1cf.png)
编号本本科生毕业设计基于Socket的网络聊天系统开发与设计Development and Design of Networkchat System Based onthe Socket学生姓名张小好专业计算机科学与技术学号1141229指导教师陈晨分院信息工程分院2015年6月摘要在信息技术高速发展的今天,Internet技术的发展已经深刻的改变了人们的生活。
摒弃了原始的通信方式,开发新的通信方式是必不可少的,人们希望用更方便、更廉价、更快捷的通信方式。
这时就需要开发一套网络聊天系统,本课题研究的是基于SOCKET通讯协议的网络聊天系统的开发与设计。
本次开发使用的是JA V A语言,文中介绍了本系统的结构和功能,最终实现可以私聊、群聊、文件传送的网络聊天系统。
本次设计主要以Socket网络通讯作为基础,采用Swing来实现的图形界面。
关键词:Java Socket 通讯协议SwingAbstractIn the information technology rapid development today, the development of Internet technology has profoundly changed people's life. Abandoned the original way of communication, the development of new communication mode is indispensable, people want to use more convenient, cheaper and faster way of communication. Then you need to develop a set of network chat system, this research is based on the SOCKET of network chat system development and design.The development using the JAVA language, this paper introduces the structure and function of this system, finally can private chat, group chat, file transfer network chat system. This design mainly Socket network communication as the foundation, the Swing technique was used to realize the graphical interface.Keywords:Java Socket Communication protocol Swing目录目录 (I)绪论 (1)选题的背景和意义 (1)第一章系统所涉及到的技术 (2)1.1J A V A语言概述 (2)1.1.1 Java语言的起源 (2)1.1.2Java语言的发展前景 (2)1.1.3 Java的语法 (2)1.2S OCKET编程 (3)1.3TCP/IP协议 (4)1.3.1 TCP/IP参考模型 (4)1.3.2 网间协议IP (5)1.3.3 传输控制协议TCP (5)1.4S WING简介 (6)1.5多线程技术介绍 (7)1.5.1在Java中实现多线程。
socket网络课设报告
![socket网络课设报告](https://img.taocdn.com/s3/m/b2d9afea04a1b0717fd5dd4f.png)
基于C/S结构的套接字程序设计----通过socket实现服务端功能学院:信息技术工程学院 _ 专业:计算机科学与技术 _ 班级: *班 _姓名:陈***学号: 0123456789指导老师: *** 开课时间:2014年1月12日到1月16日摘要基于C/S结构的套接字程序设计,采用了Client/Server模型, 程序基于TCP协议,通过socket接口来实现的。
服务器端的一个端口用来监听对服务的请求,另外有一个临时端口用来给客户端发送数据,当客户端向该地址提出连接请求时,服务器端会对它的请求做出相应的反应。
当连接成功之后,客户端就可以向服务器端发送数据或接收来自服务器的的数据。
在传输过程中如果出现错误会返回错误信息,并对该信息做出诊断。
引言1、目的及要求(1)目的和意义通过编程了解C/S结构的网络通信模型;掌握基于C/S结构的Windows Socket TCP的程序设计方法。
(2)基本要求按照C/S模型编写两个程序。
一个为客户端程序,另一是服务器端程序;对于C/S两端都应输出必要的日志、出错或诊断信息。
2、研究设想能够实现当客户端向服务器端发送请求时,通过TCP协议(传输控制协议)服务器端能够响应,并能与客户端进行通信。
3、相关理论TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。
TCP协议在网络层IP 协议的基础上,向应用层用户进程提供可靠地全双工的数据流传输。
并且通过创建的流式套接字实现服务端与客户端的数据传送。
流式套接字(SOCK--STREAM):该类套接字提供了面向连接的、可靠的、数据无错并且无重复的数据发送服务。
而且发送的数据是按顺序接收的。
所有利用该套接字进行传递的数据均被视为连续的字节流的并且无长度限制。
这对数据的稳定性、正确性和发送/接受顺序要求严格的应用十分适用,TCP使用该类接口。
4、预期结果通过运用套接字,实现服务器端与客户端的数据传送。
基于Linux的socket网络编程聊天工具课程设计
![基于Linux的socket网络编程聊天工具课程设计](https://img.taocdn.com/s3/m/5218f140852458fb770b56df.png)
*****《软件综合开发案例教程》课程设计报告课程设计题目小组成员:**,**,**,**任课讲师和助教:**,**2014年 10 月 29 日摘要这个课程设计整体采用在linux平台下,在同一局域网内实现聊天功能。
整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和客户端的连接,然后以服务端作为中继转实现客户端之间的通信。
使用socket网络编程采用TCP/IP协议保证连接可靠,并在项目管理中采用linux流行的gcc和makefile编译,提高了编译和调试效率,加快了项目的完成速度。
本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:用户之间一对一的聊天、编辑、换行、用户之间聊天记录保存、聊天记录调取。
经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。
关键词 linux,socket,gedit,服务端,客户端,网络编程AbstractThe course design of the overall use in the Linux platform, within the same LAN chat functions.Overall framework consists of server and client two parts, set up IP and port number, two main large program under Linux compiling and debugging, to connect server and client, and then turn to the server as a relay to realize the communication between the e the socket network programming using TCP/IP protocol to ensure reliable connect, and using Linux popular GCC in project management and compile a makefile, improve the efficiency of the compiling and debugging, to speed up the completion of the project.The design way of chat tool USES the string on the command line to communicate, has realized the five main functions: the one-on-one chat between users, editing, line feeds, chat records, chat records obtained between users.After testing, the program runs, reliable and can meet the requirements of the implementation in the Linux network chat. Keywords Linux, socket, gedit, server, client, network programming目录摘要 (II)Abstract (II)第一章绪论.......................................................................................... - 1 -1.1、背景......................................................................................... - 1 -1.2、网络聊天的发展状况 ............................................................ - 1 -1.3、Linux系统............................................................................ - 2 -1.3.1 、Linux的简介............................................................... - 2 -1.3.2 、Linux发展历程........................................................... - 3 - 第二章系统应用技术 ......................................................................... - 4 -2.1 、socket概念及功能 ............................................................... - 4 -2.2、socket类型 ........................................................................... - 5 -2.3 、socket函数 ........................................................................... - 5 -2.3.1 、API功能介绍.............................................................. - 5 -2.3.2、套接口地址结构 ........................................................... - 7 -2.3.3、基本转换函数 ............................................................... - 8 -2.3.4、socket编程流程 ............................................................ - 8 -2.4、TCP/IP 协议......................................................................... - 10 -2.4.1、协议概述 ..................................................................... - 10 -2.4.2、TCP/IP层次结构 ........................................................ - 10 - 第三章需求分析 ............................................................................... - 13 -3.1 、功能需求 ............................................................................ - 13 -3.2、性能需求 .............................................................................. - 13 -3.3 、模块划分 ............................................................................ - 13 -3.3.1、界面需求设计 ........................................................... - 14 -3.3.2 、通信需求 ................................................................... - 14 -3.3.3 、数据存储 ................................................................... - 14 -3.4、系统总流程图 ...................................................................... - 14 - 第四章系统测试 ............................................................................... - 15 -4.1、测试说明 .............................................................................. - 15 -4.2、模块测试 .............................................................................. - 15 -4.3、测试结果分析 ...................................................................... - 16 - 第五章设计和实现 ........................................................................... - 16 -5.1、窗体的设计 .......................................................................... - 16 -5.2、实现服务器与客户端的连接 .............................................. - 17 -5.3、聊天功能 .............................................................................. - 18 -5.4、编辑功能的实现 .................................................................. - 19 -5.5、换行功能的实现 .................................................................. - 20 -5.6、数据库的创建与连接 .......................................................... - 21 -5.6.1、MySQL数据库的简介 ............................................... - 21 -5.6.2、MYSQL环境搭建 ...................................................... - 21 -5.7 、显示聊天记录 .................................................................... - 23 -结论................................................................................................ - 25 - 致谢................................................................................................ - 26 -第一章绪论1.1、背景随着Internet的快速发展和普及,网络已经遍布世界各个角落。
基于socket的网络聊天室
![基于socket的网络聊天室](https://img.taocdn.com/s3/m/0d8b12c580eb6294dd886caa.png)
《JA V A程序设计》课程设计报告院系题目基于socket 的Client/Server监听模式学生姓名学生学号专业班级指导教师完成时间(空2行)目录1 需求分析 (1)2 系统设计……………………………………………………………………Y 2.1 界面模块设计…………………………………………………………Y 2.2 用户客户端登录验证设计……………………………………………Y 2.3服务器模块设计…………………………………………………………Y 2.4客户端模块设计…………………………………………………………Y2.5数据传输加密设计…………………………………………………………Y3 实现……………………………………………………………………Y 3.1 界面模块实现…………………………………………………………Y 3.2 用户客户端登录验证实现……………………………………………Y 3.3服务器模块实现…………………………………………………………Y 3.4客户端模块实现…………………………………………………………Y 3.5 数据传输加密实现…………………………………………………………YX ×××××(正文第X章)…………………………………………………Y 结论………………………………………………………………………………Y 参考文献…………………………………………………………………………Y 附录A 源代码(必须)………………………………………………………Y正文部分:1 需求分析现在网络通信应用的很广泛,几乎所有应用都基于网络实现通信。
而要实现异地的网络通信,尤其是C/S结构的软件,使用套接字的网络编程是实现双方通信的基础。
本课程设计就是基于Java TCP客户端和服务器、UDP组播实现的群聊。
1.1 基本功能需求以下三点是本课程设计的基础功能实现,即要完成基本的客户端-服务器的连接通信。
网络编程实训课程学习总结基于Socket的多人聊天室开发
![网络编程实训课程学习总结基于Socket的多人聊天室开发](https://img.taocdn.com/s3/m/1d7ad60aa9956bec0975f46527d3240c8447a19d.png)
网络编程实训课程学习总结基于Socket的多人聊天室开发在网络编程实训课程中,我学习了基于Socket的多人聊天室开发。
本文将总结我在学习过程中的收获和体会,并对实训课程进行一些反思和建议。
一、引言网络编程是现代计算机科学中非常重要的一个领域,它涉及到如何在不同的计算机之间进行通信和数据交换。
而Socket则是网络编程中常用的一种编程接口。
本次实训课程通过基于Socket的多人聊天室开发,使我们更加深入地了解了网络编程的原理和实践。
二、实训内容在实训课程中,我们首先学习了Socket编程的基本知识,包括Socket的建立、数据传输和断开等。
随后,我们开始实践基于Socket 的多人聊天室的开发。
通过分析需求,我们设计了聊天室的功能模块和用户界面,并使用Python编程语言进行开发。
三、学习收获1. 深入理解了网络编程的原理:通过实践,我更加深入地理解了网络编程的原理和过程。
我了解到Socket编程是通过TCP/IP协议栈实现的,而客户端和服务器之间的通信则是通过套接字(Socket)进行的。
2. 掌握了多线程编程:为了实现多个用户同时在线聊天的功能,我们采用了多线程编程的方式。
学习了线程的创建、管理和同步等技术,使得我们能够更好地实现多人聊天室。
3. 提升了团队协作能力:在开发聊天室的过程中,我们需要与团队成员紧密合作。
通过分工合作、协商解决问题等方式,我们体会到了团队协作的重要性,并在实践中逐渐提升了团队协作能力。
四、实训反思与建议在实训过程中,我发现了一些可以改进的地方,并提出了一些建议:1. 更加注重理论与实践结合:在学习网络编程的过程中,希望能够更加注重理论与实践的结合。
例如,在学习Socket编程的基本原理时,可以提供更多的实际案例进行演示。
2. 加强技术支持与指导:对于初学者而言,网络编程可能会遇到一些技术上的困难。
因此,希望在实训过程中能够加强技术支持与指导,及时解答学生的疑问。
3. 提供更多实际应用案例:除了多人聊天室的开发,希望在实训课程中能够提供更多实际应用案例。
基于Socket的聊天程序
![基于Socket的聊天程序](https://img.taocdn.com/s3/m/c68ea3230c22590103029d6b.png)
JAVA程序设计课程设计报告课题: 基于Socket的聊天程序姓名:骑蚂蚁去流浪学号:0213同组姓名:专业班级:计科0912班指导教师:刘国清设计时刻:2012年上学期第01周评阅意见:评定成绩:指导老师签名:年月日目录一、前言 (2)二、课题概述 (2)(一)课题概述 (3)(二)相关技术 (3)三、系统设计 (3)(一)需求分析 (4)(二)系统功能 (5)(三)系统架构 (6)(四)模块设计 (7)四、详细设计与实现 (8)(一)服务端设计 (8)(二)客户端设计 (9)(三)辅助类设计 (10)五、系统运行结果 (11)六、结论与总结 (13)(一)课程设计结论 (13)(二)课程设计总结与体会 (14)七、附录 (15)一、前言Java课程设计是运算机科学与技术专业学生必做的集中实践性环节之一,是学习完《Java程序设计》课程后进行的一次全面的综合练习。
其目的在于通过课程设计,能够取得较系统的技术训练,从而巩固和加深对Java 编程的基础理论知识的理解,提高综合运用所学理论解决实际问题的能力,成为具有扎实的运算机理论基础和较强的独立动手能力的复合型、应用型人材。
二、课题概述、课题概述现今社会,网络技术愈来愈进展,能够说,二十一世纪就是网络的世纪。
网络迅猛进展,势不可挡。
为了实现资源共享,各式各样的网站进展迅速,各类各样的聊天工具不断更新。
本次课程设计选择一个以JAVA语言实现一个基于Socket的网络聊天室程序。
本系统提供一个网络交互平台,各用户之间能够实时方便的传递信息,能够在聊天室里实现群聊。
本系统主如果利用JAVA语言基于Socket通信机制制作的一个聊天室,采用的是客户/服务器。
二层的C/S结构是指以单一的服务器和局域网为核心,能通过客户端与用户进行直接对话。
为利用户能直观地进行操作,一般要利用图形用户接口(GUI),操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他。
基于Socket仿微信系统网络应用课程设计报告
![基于Socket仿微信系统网络应用课程设计报告](https://img.taocdn.com/s3/m/89e234066c175f0e7cd13783.png)
(计算机学院)网络应用课程设计报告题目:基于Socket仿微信系统专业名称:网络工程1101班级:学生姓名:学号(8位):指导教师:设计起止时间:2014年6月16日~2014年6月27日一. 设计目的1.掌握网络应用设计的方法和步骤;2.掌握用户需求分析的方法和设计文档的编制方法;3.掌握应用开发辅助软件的使用方法;4.掌握数据库设计方法;5.掌握通信协议的特点,消息格式设6.掌握软件测试的基本流程。
二. 设计内容随着网络的快速发展,社交网站也变得越来越普及,人们不必再去花费大量的时间和精力去参加社交活动所,只要通过互联网便可拥有自己的朋友圈。
仿微信系统基于Socket实现C/S架构完成系统搭建,安卓端作为客户端,服务器端采用多线程响应每个客户端,在服务器端有用户注册到数据库,存储转发客户端相关消息。
客户端界面与功能完成微信官方客户端的部分常用功能,包括语音实现,消息实现,图片实现等。
主要完成一个具有实用价值的网络应用程序,该应用中应包括:图形化界面、套接字通信、多线程处理、相应的业务处理逻辑等。
对于该系统:第一,通讯基础模块的快和省。
手机社交产品种类很多,包括手机IM、SNS、图片分享、位置交友等。
而这些社交产品都有一共同的功能:通讯,这是手机社交产品最为基础的功能。
而用户对通讯的要求非常简单,那就是要快和省。
因此所有手机社交类产品开发准则第一条就是:通讯基础模块的快和省。
如果没有这一基础,其他的功能都妄谈。
第二,交互设计要轻和简洁由于社交类应用,都牵扯到用户的交互,而交互的设计必须轻和省。
所谓轻,就是要尽可能减少产品的层次,最好只有一层,并可以通过滑动触控迅速在各功能之间切换;所谓省,就是要求一步可以完成的操作,不要让用户做2步。
目前,新浪微博手机客户端的交互就存在很大问题。
由于评论与转发分别提醒用户,导致一个内容用户看2次,刷新2次微博,浪费时间和流量,没有做到轻;而评论功能,则需要做2步才可以完成,没有做到省。
socket网络课程设计报告
![socket网络课程设计报告](https://img.taocdn.com/s3/m/9a0b297052ea551810a68796.png)
计算机网络课程设计报告网络连天程序的设计与实现姓名:李坚学号: 0855010206班级:计算机002指导老师:文宏湖南科技大学计算机科学与工程学院2011年9月一、课程设计题目利用Windows Socket编程实现局域网的聊天程序,要求能实现消息的发送和接收,以及聊天软件的细节问题。
二、题目分析拿到题目之后先来了解windows socket连接的过程与相关的API 函数。
按照题目的要求,我简单的分析了下并做了初步的设计:利用tcp协议建立连接,这样服务器和客户端分离,服务端先启动并监听端口,客户端启动之后连接服务端建立连接,接着收发聊天信息。
当任意一方连接断开的时候给出适当的提示并结束程序。
因为功能比较简单,所以设计起来还是比较容易的。
实际的操作中我遇到了很多新奇的问题并通过一些方案修改或者实现了最终的功能。
三、设计步骤1、熟悉网络编程概念以及一些基本知识2、在windows 的编程环境下熟悉了常用socket函数3、先整体再局部顺序设计程序4、调试并修改程序,使之实现设计要求5、测试程序,从中找出程序缺陷和可改进内容6、重复修改和测试,以达到自己理想的功能7、程序评定测试8、撰写设计报告四、设计过程第一个版本并未实现收发同步,只是简单的阻塞式通信。
因为没有用到多线程,所以在程序监听网络数据写入时不能监听键盘输入,所以只能发一条后接一条,其中的问题可想而知。
第二个版本用多线程实现了同时收发问题,在连接建立后新建一个线程用来等待键盘输入,而主体线程等待网络输入,当网络输入错误时(连接断开),结束线程并作下一步处理。
这个版本就上个版本改进很多,主要可以即时在屏幕输出接收到的消息,同时也出现了另外一个缺陷:当键盘输入到一半时程序收到了网络的信息,这个时候程序的做法是直接输出这条信息,这导致我们键盘输入的信息被切断,很不人性化。
第三个版本,也就是目前评测的版本,这个版本利用临界值来锁定屏幕资源,让程序在同一时刻只能一个程序拥有屏幕控制权,这样保证了不会交叉显示。
基于socket的网络即时聊天系统
![基于socket的网络即时聊天系统](https://img.taocdn.com/s3/m/ff496366783e0912a2162a66.png)
课程题目:基于Socket的即时通讯系统1.设计目的:通过综合课程设计,使学生能够运用《数字信号处理》、《信号与系统》、《通信原理》、《面向对象的程序设计》、《计算机通信网》、《通信协议开发及应用》等课程的知识来设计一个基于Socket 的即时通讯系统,培养学生的动手能力以及分析问题、解决问题的能力。
2.设计内容:基于Socket和多线程编程的聊天程序实现3.设计要求:(一)基本要求1.熟练掌握面向对象的程序设计方法;2.实现点对点通讯,能进行文字对话传输,包括客户端与服务器端;3.能对系统参数进行配置。
(二)提高要求1、实现文件、图片传输;2、语音对话(两人及两人以上);3、友好的对话界面。
4.设计原理:1 TCP/IP简介TCP/IP的历史要追溯到70年代中期,当时ARPA为了实现异种网之间的互连(interconnection)与互通(intercommunication),大力资助网间网技术的研究和开发,于1977年到1979年推出目前形式的TCP/IP体系结构和协议规范.到今天,TCP/IP技术以及Internet网间网已经为广大计算机工作者,机算机厂商和机算机用户所接受.据统计,到1990年,Internet以包含遍布欧美的五千个活动网络,超过三十万台机算机.作为一种事实上的工标准,TCP/IP技术方兴未艾.2 TCP/IP的网络分层结构对TCP/IP协议来说,TCP提供传输层服务,IP提供网络层服务.TCP/IP协议组(或Internet协议组)的分层结构及其与OSI模型的对应关系如图4所示.图中有关协议的名称及其基本含义如下:(1) TCP. 为传输控制协议(Transmission Control Protocol).它是提供给用户进程的一个可靠的全双工字节流的面向连接的协议.大多数Internet应用程序使用TCP.因为TCP使用IP,所以整个Internet协议组也常称为TCP/IP协议组.(2) UDP. 为用户数据报协议 (User Datagram Protocol).(3) ICMP. 为网间报文控制协议 (Internet Control Message Protocol).(4) IP. 网间协议 (Internet Protocol). IP协议是为TCP,UDP和ICMP 提供分组发送服务协议.(5) ARP. 地址转换协议.(6) RARP. 反向地址转换协议.3 Socket编程界面(1) Socket 原理Socket编程界面由4BSD UNIX首先提出,目的是解决网间网进程通信问题.Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信,而且支持网络通信功能.Socket具有类型,反应了对用户透明的通信特性.一个完整的Socket连接用一个相关描述:{ 协议,本地地址,本地端口,远地地址,远地端口 }Socket 是面向客户-服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用.(2) Socket系统调用不管Socket内部机制如何,它提供给应用程序员的最终界面是一组系统功能调用.下面,我们一一给出重要的Socket系统调用.1. 创建 Socket ----- socket()调用格式如下:sockid = socket (af,type,protocol)af : 地址族,指本socket所用地址类型.type : 类型,指创建socket的应用程序所希望的通信服务器类型.protocol : 协议,指本socket请求的协议.2. 指定本地地址 ---- bind()调用bind()将本地socket地址与所创建的socket联系起来,即将本socket 地址赋予socket,以指定本地半相关.bind()的作用相当于给socket命名,调用格式为:bind (sockid,localaddr,addrlen)sockid : socket号.localaddr : 本地socket地址.addrlen : 地址长度.3. 建立socket连接 ---- connect () 与 accept ()调用这两个系统调用用于完成整个相关的建立.其中connect用于建立连接 .调用格为:connect (sockid,destaddr,addrlen)destaddr : 指向对方socket地址(信宿地址)结构的指针.accept : 用于面向连接的服务器,其调用格式为:newsock = accept (sockid,clientaddr,paddrlen)clientaddr : 指向客户socket地址指针.paddrlen : 客户socket地址长度.4. listen() 调用此调用用于面向连接服务器,表明它愿意接收连接,listen()在accept()之前调用,格式为:listen (sockid,quelen)quelen : 请求队列长度.5. 发送数据 ---- write(),writev(),send()与sendto(),sendmsg()用于socket数据发送的系统调用一共有五个,其中三个,write(),writev()和send()用于面向连接传输,其余两个用于无连接传输.面向连接的调用可以不指定信宿地址,而无连接的调用必须指定.假如无连接socket的双方均调用过connect(),可以认为是建立有连接的socket,也可以面向连接调用发送数据.三个面向连接调用三者的格式大致相同:write (sockid,buff,bufflen) : 缓冲发送writev (sockid,iovector,vectorlen) : 集中发送send (sockid,buff,bufflen,flags) : 可控缓冲发送其中buff指向发送缓冲区的指针,bufflen是发送缓冲区大小.用于无连接数据发送的调用有两个:sendto (sockid,buff,bufflen,flags,dsadd,addrlen)sendmsg (sockid,message,flags):可控集中无连接发送.6. 接收数据 ---- read(),readv(),recv()与recvfrom(),recvmsg()接收数据与发送数据系统调用是一一对应的,两者参数的最大区别是,前者buffer是一个指针,其所指单元初值为欲读数据长度,调用后的值是实际读出的值.4 客户--服务器模型的Socket实现框架1)客户--服务器模型时序图下图是面向连接客户--服务器模型的典型时序图服务器客户socket() socket()bind() bind()listen()accept() 等待客户连接请求阻塞 <━━━━━━━━━━━━━━━ connect()read() <━━━━━━━━━━━━━━━> write()2)服务器socket地址的确定在客户--服务器模型中,所有的作用者都是客户首先发起的(如连接请求,服务请求等),因此客户必须要知道服务器socket地址,另外,客户调用服务器之前,可以在命令行中给出服务器所在主机的域名,根据域名可以获得服务器主机的地址,系统调用为:hp=gethostbyname(host).其中host可以是服务器主机域名,返回hp是一个指向主机地址结构的指针.5.软件设计:系统实现原理图。
软件工程课程设计报告Socket聊天系统
![软件工程课程设计报告Socket聊天系统](https://img.taocdn.com/s3/m/7bd715ad0b4e767f5bcfce53.png)
目录1.前言 (4)2.需求分析 (5)系统的功能需求 (5)点歌 (5)分组管理 (5)个人信息管理 (5)…用户管理 (5)视频通话 (5)非功能需求: (5)网络安全 (5)用例分析 (6)参与者 (6)用例分析 (6)系统的用例图 (6)^3.总体设计 (8)服务器设置 (8)分析类图 (9)顺序图 (10)用户私聊顺序图 (10)用户传送文件序列图 (11)协作图 (11)用户私聊协作图 (11)>用户传送文件协作图 (12)4.详细设计 (14)客户端设计 (14)服务端设计 (14)多线程设计 (15)5.代码实现 (16)服务端设计 (16)客户端设计 (18)—多线程 (22)服务端多线程 (22)客户端多线程 (24)6.运行与测试 (25)用户登录界面 (25)输入端口界面 (25)服务器记录,在线的用户信息。
(26)私聊 (26)#登录 (26)用户给指定的好友发送信息。
(私聊) (27)指定好友接受到好友信息。
(私聊的信息) (27)好友回复我的信息 (28)群聊 (28)发送群消息 (28)好友响应并接受群聊信息 (29) (29)|7. 小结 (30)8.参考文献 (31)…1.前言-随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。
目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。
该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。
前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。
后者通过与服务器建立连接,来进行客户端与客户端的信息交流。
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。
开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。
socket网络课程设计报告
![socket网络课程设计报告](https://img.taocdn.com/s3/m/a167b3eefe4733687f21aa1c.png)
计算机网络课程设计报告网络连天程序的设计与实现姓名:李坚学号:0855010206班级:计算机002指导老师:文宏湖南科技大学计算机科学与工程学院2011年9月页脚内容1一、课程设计题目利用Windows Socket编程实现局域网的聊天程序,要求能实现消息的发送和接收,以及聊天软件的细节问题。
二、题目分析拿到题目之后先来了解windows socket连接的过程与相关的API函数。
按照题目的要求,我简单的分析了下并做了初步的设计:利用tcp协议建立连接,这样服务器和客户端分离,服务端先启动并监听端口,客户端启动之后连接服务端建立连接,接着收发聊天信息。
当任意一方连接断开的时候给出适当的提示并结束程序。
因为功能比较简单,所以设计起来还是比较容易的。
实际的操作中我遇到了很多新奇的问题并通过一些方案修改或者实现了最终的功能。
三、设计步骤1、熟悉网络编程概念以及一些基本知识2、在windows 的编程环境下熟悉了常用socket函数3、先整体再局部顺序设计程序页脚内容24、调试并修改程序,使之实现设计要求5、测试程序,从中找出程序缺陷和可改进内容6、重复修改和测试,以达到自己理想的功能7、程序评定测试8、撰写设计报告四、设计过程第一个版本并未实现收发同步,只是简单的阻塞式通信。
因为没有用到多线程,所以在程序监听网络数据写入时不能监听键盘输入,所以只能发一条后接一条,其中的问题可想而知。
第二个版本用多线程实现了同时收发问题,在连接建立后新建一个线程用来等待键盘输入,而主体线程等待网络输入,当网络输入错误时(连接断开),结束线程并作下一步处理。
这个版本就上个版本改进很多,主要可以即时在屏幕输出接收到的消息,同时也出现了另外一个缺陷:当键盘输入到一半时程序收到了网络的信息,这个时候程序的做法是直接输出这条信息,这导致我们键盘输入的信息被切断,很不人性化。
第三个版本,也就是目前评测的版本,这个版本利用临界值来锁定屏幕资源,让程序在同一时刻只能一个程序拥有屏幕控制权,这样保证了不会交叉显示。
计算机网络课程设计报告基于Socket在线数据传输的设计与实现
![计算机网络课程设计报告基于Socket在线数据传输的设计与实现](https://img.taocdn.com/s3/m/0fe591ac7fd5360cbb1adb24.png)
计算机网络课程设计报告基于Socket在线数据传输的设计与实现数据通信与计算机网络课程设计报告指导老师;苏军学院:运算机科学学院专业:2019级电子信息科学与技术组长:学号:组员:学号:2组员:学号:基于Socket在线数据传输的设计与实现摘要近年来随着运算机技术的飞速进展,专门是Internet技术的进展,差不多深刻的改变到了人们生活的方方面面。
这时过去的种种陈旧的通讯方式,都差不多不能满足现代生活的需要。
人们期望能够用更低廉的价格,更加方便快捷的方式,来实现即时通讯。
这时开发一套基于Internet技术的网络数据传输系统变得尤为重要。
Internet是目前世界上最大的运算机互联网络,它遍布全球,并将世界各地不同规模和大小的网络连接成为一个整体。
目前基于Internet的应用差不多专门多了,例如网上收发邮件、网上购物、网上看电影等等。
这些应用无不在改变人们的生活传统生活方式。
本课题要紧研究的是基于Socket的数据传输软件,此软件分为服务器程序和客户端程序,本课题的目标是能实现用户在客户端与服务器端传递信息。
要紧研究开发内容是:熟悉系统开发平台,探究在此开发平台下,利用Socket编程技术、TCP/IP协议等进行谈天软件的实际开发。
一.课程设计性质:独立课设二.课程设计目的和任务:1、把握数据通信和运算机网络的差不多原理2、把握数据通信和运算机网络设计、分析和实现方法3、提高学生编制网络通信程序、网络应用服务程序的能力三.课程设计差不多内容及要求:差不多内容:网络数据通信的差不多方法及实现。
差不多要求:依照选定的项目,课题小组成员认真查阅相关资料,发挥学生的主体作用,提出设计方案,老师参与,进行讨论和分析,最终确定设计方案。
在此基础上,合理分工,协同完成项目的设计与实现,最后完成课程设计的报告撰写。
四.课程设计平台基于Eclipse集成开发环境五.课程设计原理:1. TCP/IP协议TCP/IP是Transmission Control Protocol/Internet Protocol 的简写,中文译名为传输操纵协议/互联网络协议,该协议是Internet 最差不多的协议,简单地说,确实是由底层的IP协议和TCP协议组成的。
仿微信课课程设计
![仿微信课课程设计](https://img.taocdn.com/s3/m/fa0bd6d9b8d528ea81c758f5f61fb7360b4c2bcc.png)
仿微信课课程设计一、教学目标本课程旨在让学生了解和掌握微信的基本功能和使用方法,提高他们的信息素养和沟通能力。
具体目标如下:1.知识目标:学生能够理解微信的发展历程、基本功能和社交属性,以及如何在微信上进行信息交流和分享。
2.技能目标:学生能够熟练使用微信的各项功能,如发送消息、语音通话、视频通话、朋友圈分享等,并能合理运用微信进行学习和生活中的沟通。
3.情感态度价值观目标:学生能够认识到微信作为一种新兴社交媒体的积极和消极影响,正确使用微信,避免沉迷于网络,增强信息安全和自我保护意识。
二、教学内容本课程的教学内容主要包括微信的发展历程、基本功能、使用方法以及微信在学习和生活中的应用。
具体安排如下:1.微信的发展历程:介绍微信从诞生到现在的演变过程,让学生了解微信的发展背景和趋势。
2.微信的基本功能:详细讲解微信的消息发送、语音通话、视频通话、朋友圈等功能,让学生掌握微信的基本操作。
3.微信的使用方法:教授学生如何设置微信、添加好友、创建群聊等,提高他们的微信使用技巧。
4.微信在学习和生活中的应用:探讨微信如何帮助学生学习、如何在生活中便捷沟通等方面,引导学生正确使用微信。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法等。
具体方法如下:1.讲授法:教师通过讲解微信的发展历程、基本功能和使用方法,让学生掌握微信的相关知识。
2.讨论法:学生就微信的某一功能或应用展开讨论,促进学生思考和交流。
3.案例分析法:教师展示实际案例,让学生分析微信在学习和生活中的应用,提高学生的实践能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的微信使用教程,作为学生学习的主要参考资料。
2.参考书:提供一些关于社交媒体和信息素养的书籍,供学生拓展阅读。
3.多媒体资料:制作微信功能介绍的视频、动画等,帮助学生更直观地了解和掌握微信的使用。
基于Socket的多客户端网络聊天系统的开发与设计
![基于Socket的多客户端网络聊天系统的开发与设计](https://img.taocdn.com/s3/m/2a0772668e9951e79b892781.png)
Applet是创建在html上的Java程序;它是具有安全性、动态性、跨平台无关性特点的网络应用程序。Java语言的特点使的其可以将网络的利用达到最大化。这些由Java语言编写的程序嵌入在特定的容器中;通常可以与用户进行交互式交流,产生特定的效果。
Java中丰富的类库,它们提供了多线程、网络化、面向对象系统的需要。
1.2JAVA的优势
1.2.1JAVA的主要特点
Java语言具有简单性、面向对象过程、分布式、解释执行、健壮性、 安全、体系结构中立、可移植、性能高、多线程以及动态性的特点。
1.简单性
Java最初的设计目的是为对家用电器进行简单易行的,方便用户使用的,可控的操作而开发的一中编译语言,因此必须简单明了。其主要在以下三个方面体现:
1.主要包含两个最基本的包:实用包(Java.util)和语言包(ng)
其包含的主要类:
语言包(ng)。String类、class类、Runtime类、Object类、Float类和Math类
实用包(Java.util):Data类、Vector类、Arrays类和 Enumeratin接口
关键词:局域网 聊天 套接字 Java Eclipse 简易聊天工具
Development and design of multiple client network chat system based on Socket
Student:zhuang weijie(Faclty Asviser:lin jian bing)
5.安全性
用于网络中分布式环境下的Java防止病毒的入侵。因为Java不支持指针,通过对象的实例变量来访问内存;这样就防止病毒访问其私有成员,同时预防可因操作指针而产生的错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 设计目的1.掌握网络应用设计的方法和步骤;2.掌握用户需求分析的方法和设计文档的编制方法;3.掌握应用开发辅助软件的使用方法;4.掌握数据库设计方法;5.掌握通信协议的特点,消息格式设6.掌握软件测试的基本流程。
二. 设计内容随着网络的快速发展,社交网站也变得越来越普及,人们不必再去花费大量的时间和精力去参加社交活动所,只要通过互联网便可拥有自己的朋友圈。
仿微信系统基于Socket实现C/S架构完成系统搭建,安卓端作为客户端,服务器端采用多线程响应每个客户端,在服务器端有用户注册到数据库,存储转发客户端相关消息。
客户端界面与功能完成微信官方客户端的部分常用功能,包括语音实现,消息实现,图片实现等。
主要完成一个具有实用价值的网络应用程序,该应用中应包括:图形化界面、套接字通信、多线程处理、相应的业务处理逻辑等。
对于该系统:第一,通讯基础模块的快和省。
手机社交产品种类很多,包括手机IM、SNS、图片分享、位置交友等。
而这些社交产品都有一共同的功能:通讯,这是手机社交产品最为基础的功能。
而用户对通讯的要求非常简单,那就是要快和省。
因此所有手机社交类产品开发准则第一条就是:通讯基础模块的快和省。
如果没有这一基础,其他的功能都妄谈。
第二,交互设计要轻和简洁由于社交类应用,都牵扯到用户的交互,而交互的设计必须轻和省。
所谓轻,就是要尽可能减少产品的层次,最好只有一层,并可以通过滑动触控迅速在各功能之间切换;所谓省,就是要求一步可以完成的操作,不要让用户做2步。
目前,新浪微博手机客户端的交互就存在很大问题。
由于评论与转发分别提醒用户,导致一个内容用户看2次,刷新2次微博,浪费时间和流量,没有做到轻;而评论功能,则需要做2步才可以完成,没有做到省。
第三,手机社交产品都应具备LBS功能SoLoMo作为互联网与现实之间的桥梁,可以让用户轻松的从线上走到线下,这也是互联网从虚拟走向现实的开始。
一款社交产品,如果只有线上的沟通,时间久了,用户会感觉到无价值,而一旦整合LBS功能,则让其社交的价值更加实在,更容易落地。
而且通过LBS功能,还可以与身边的各类生活服务相结合,对用户生活带来巨大帮助。
比如,手机QQ的查看附近的人和查看附近的商家,就是社交+LBS的应用。
第四,读图时代来临,“轻社交”盛行例如Instagram卖了10亿美元,这被认为是移动互联网市场的最大黑马,而其快速发展的原因在于用户可以通过这个简单的软件分享自己的照片。
有数据显示,facebook中70%的信息是图片信息。
用户随手拿起手机,拍一张照片,然后通过分享与朋友、陌生人互动,这其实触动了用户show的神经,而每个人都有show的欲望。
目前,快速发展的path,微博的美图精选,甚至是手机QQ都加入个人名片图片墙,微信的朋友圈,其实都看中了读图的巨大市场前景。
而图片加上简单的文字,构成了轻社交,而用户对这些照片,或许只是一个“赞”,一个表情符即可表达自己的观点。
用户越来越懒惰,而share和show却越来越疯狂,我想这正是“轻社交”时代的标志。
总之,社交软件的兴起不是偶然的,满足大多数网名的需求。
三.概要设计本系统中提供以下功能:●客户端首先注册登录名和密码,服务器将此信息保存在XML文件中;●客户端通过登录的方式进入应用;●客户端获得已在用户列表权限;●客户端默认发送的信息为公开信息;●客户端可以选择消息的接收者;●客户端可以发送字符消息,语音消息,图片表情给指定接收者;●服务器端管理用户信息;●服务器端向客户端转发消息;●服务器端采用多线程的方式来响应客户端连接;C:android平台实现 S:java project实现1.功能模块图图1 仿微信系统功能模块图2.各个模块详细的功能描述①注册:服务器端中增加一个用户的信息,客户端需要填写用户名、头像图片等基本信息。
②登陆:用户提交IP,端口号,用户名进行登录③验证:服务器端接收到用户信息与数据库内容比对进行验证④文字发送:Client1向Client2发送“hello”,数据流程为 Client1→Server (解析消息内容,查找接收者Client2的写线程)→Client2,这样就能准确的将消息发送到Client2。
⑤语音发送:发送端有三个主要的类:AudioRecorder(负责音频采集),AudioEncoder(负责音频编码),AudioSender(负责将编码后的数据发送出去);这三个类中各有一个线程,录制开始后,这三个线程一起运行,分别执行各自的任务, AudioRecorder采集音频后,添加到AudioEncoder 的音频数据的List中,而AudioEncoder 的编码线程不断从List头部取出数据,调用ilbc 的底层\函数进行编码,编码后的数据则又添加到下一级的AudioSender 的 List中,AudioSender又不断从头部取出数据,然后发送出去。
⑥图片发送:client上传图片给服务器,然后转发给各个客户端。
四.详细设计1.功能函数的调用关系图Server端:图1 User类关系图图2 Constant类关系图3 Server类关系图4 工具类关系图5 仿微信系统服务器端功能函数图②信息类:User类用户信息Message类消息C ontentFlag 内容标识类,区分不同的消息类型③主类:MainServer类启动服务器④业务逻辑类:ChatServer类服务器Socket处理chatServerTask类Quit()服务器终止,关闭所有线程start()服务器启动SocketTask()内部线程类,负责与个客户端的数据通信sendMsg()发送消息run()// 处理注册消息//处理登录消息//将聊天室其它所有在线用户的头像数据缓存到该登录用户客户端//加载用户头像资源//循环向连接的每个Socket客户端发送登录消息//处理录音消息//循环向连接的每个Socket客户端发送消息//处理普通消息//处理退出消息Client端:图6 仿微信系统客户端功能函数图①适配器类: ChatMsgViewAdapter 聊天页面ListView内容适配器 ExpressionGvAdapter表情页面GridView内容适配器② 工具类 : ExpressionUtil 正则表达式处理工具类,用来处理表情信息 FileDealTool 文件处理类StreamTool 获取要从流中读取的数据长度,网络流数据格式 SystemConstant 配置常量③消息标志类:ContentFlag 内容标识类,区分不同的消息类型④消息接口:Message User⑤服务类: 1.MessageService 类startConnect()建立连接quitApp() 应用退出receiveMsg()接收消息saveRecordFile()保存录音文件parseJsonToObject()解析json字符串 sendMsg()发送消息sendRecordMsg()发送语音消息2.RegisterService类 registerUser()注册用户erService类负责用户登录的业务类⑥接口类: IhandleMessge接收并处理消息的接口⑦数据库帮助类:MessageDbHelper UserDbHelper⑧业务逻辑类:Appstart()ChatActivity()UserLoginActivity()UserRegisActivity()WelcomeActivity()2.各功能函数的数据流程图3.重点设计及编码A.数据库设计用户信息表B. 流程设计C:消息格式设计在服务器端发送的消息用户登录消息Class msg implments Serializable{ String userID;String userPWDString imageID;}聊天室消息#senderID#receiverID#content#sendTimeD:核心编码送端有三个主要的类:AudioRecorder(负责音频采集),AudioEncoder(负责音频编码),AudioSender(负责将编码后的数据发送出去);这三个类中各有一个线程,录制开始后,这三个线程一起运行,分别执行各自的任务,AudioRecorder采集音频后,添加到AudioEncoder 的音频数据的List中,而AudioEncoder 的编码线程不断从List 头部取出数据,调用ilbc 的底层\函数进行编码,编码后的数据则又添加到下一级的AudioSender的List中,AudioSender又不断从头部取出数据,然后发送出去;由于采用的是Socket连接Tcp协议,所以必须有一台服务器充当Server,由于客户端和服务器是多对一的关系,所以服务器端需要为每个建立连接的用户分配一个线程,因此考虑使用线程池管理多线程以提高效率。
服务器核心内容如下图所示。
Client1向Client2发送“hello”,数据流程为Client1→Server(解析消息内容,查找接收者Client2的写线程)→Client2,这样就能准确的将消息发送到Client2。
ServerManager类实现对Socket的管理,类实例化后就循环监听客户端发送的链接请求,此处accpet()阻塞等待,知道有链接进来后才往下执行,为链接进来的socket连接分配相应的读写线程,并以HashMap<k,v>记录线程每个用户对应的OutputThread,方便后面服Server对消息进行反馈和转发为方便开发,Socket的IO读写采用了ObjectOutputStrem和ObjectInputStream,简单看下Socket通讯模型设定消息协议,服务器和客户端都根据协议发送消息,例如LOGIN表示登陆,此处理论上用enum比class更规范,但是由于Socket读写是用的Object流,读写的对象必须序列化,而且对象中变量类型必须都为Java基本类型,故只能用int 了。
定义好消息对象模型。
通过读线程,不断地读取客户端发来的消息,并根据不同的消息类型,进行相应的处理写线程,内容简单、工作单一,随时准备着往socket里写信息,外部通过setMessage()方法,唤醒线程,写完之后线程继续等待五.测试数据及运行结果1.正常测试数据和运行结果客户端:c服务器端:2.异常测试数据及运行结果六.调试情况,设计技巧及体会1.改进方案对自己的设计进行评价,指出合理和不足之处,提出改进方案;2.体会对设计及调试过程的心得体会。
七.参考文献[1] 作者. 书名. 出版社. 出版年[1] 朱辉,李刚. JA V A网络程序设计. 西安电子科技大学出版社. 2012年八.附录:源代码(电子版)。