基于TCP的网络聊天室的设计

合集下载

基于TCPIP的局域网聊天室的设计与实现详解

基于TCPIP的局域网聊天室的设计与实现详解

基于TCP/IP的局域网聊天室的设计与实现摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。

局域网的发展也同样迅速。

很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。

所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。

并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。

本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用windows消息机制实现进程间的同步,两种机制结合使用。

局域网聊天室作为一种新型的聊天工具可以提供更为及时、可靠、突破了必须有外界网络接入等优点,具有极其广泛的发展前景。

本文介绍了采用JAVA编程开发局域网聊天系统的一套比较常用的解决方案。

采用TCP模式进行文字聊天, 在客户端之间点对点(C/C)的进行。

本系统采用典型的C/S(客户端/服务器)的框架模式,在该方案中采用Socket (套接字)原理实现网络通信,最终实现了通过服务器中转的文字聊天、文件传输功能,从而大大降低了程序的开发难度。

本系统主要包括登陆、聊天、好友列表和服务器管理几个部分。

本系统从需求分析、系统的设计、功能的实现都严格遵循了软件工程设计的思想。

【关键词】Socket;TCP/IP;C/S;局域网聊天室AbstractWith the development of computer network technology, a variety of Web-based applications also will be the birth, such as Internet-based information release, communications, data sharing, and so on. LAN development is quickly. Many government agencies, businesses, schools, are first linked together in a unified LAN, respectively connected to the INTERNET, LAN-based instant messaging tool, and thus came into being. In this paper, a more rational design, in WINDOWS platform to achieve integrated in this realization of the client and server in different parallel tasks within a program, multi-threaded. And the design of user-friendly interface, easy to use and very reasonable, and easy expansion and customization. LAN chat system to a specific shared memory data exchange between process and use the windows message mechanism to achieve inter-process synchronization, the two mechanisms used in conjunctionLAN chat room as a new chat tool that can provide the advantages of more timely, reliable, broke the need of outside network access, has a very wide range of development prospects.This article describes a JA V A Programming LAN chat system, a more common solution. TCP mode, text chat, peer-to-peer (C / C) between the client. The system uses the framework of a typical C / S (Client / Server) mode, the program using the Socket (socket) the principle of network communication, and ultimately the transit through the server, text chat, file transfer capabilities, which greatly reduces the difficulty of program development.The system includes landing, chat, friend lists, and server management of several parts. The system needs analysis, system design, the realization of functions strictly follow the idea of software engineering.【Key words】Socket;TCP/IP;C/S;Local Area Network Chat Room目录第1章引言 (1)1.1课题背景 (1)1.2国内外研究现状 (2)1.3主要内容 (3)第2章局域网聊天室系统分析 (4)2.1系统需求分析 (4)2.1.1功能需求 (4)2.1.2系统基本流程图 (4)2.1.3性能要求 (5)2.1.4测试环境规定 (5)2.2可行性研究 (5)2.2.1成本可行性分析 (5)2.2.2技术可行性分析 (5)2.3系统开发环境的分析 (6)2.4数据流图 (6)2.4.1顶层数据流图 (6)2.4.2一层数据流图 (6)第3章系统设计 (7)3.1设计目标 (7)3.2构建开发环境 (7)3.3系统模块流程图 (7)3.4系统功能模块图 (9)第4章基于Eclipse的聊天室的分析与设计 (10)4.1 TCP套接字的运用 (10)4.2 TCP三次握手协议 (11)4.3程序结构 (11)4.3.1多用户在线方案 (11)4.3.2软件框架 (12)4.4代码实现 (12)4.4.1用户登陆模块 (12)4.4.2用户列表模块 (13)4.4.3文本聊天模块 (15)4.4.4文件传输模块 (17)第5章局域网聊天室系统测试 (20)5.1系统测试结果与分析 (20)5.1.1用户登陆以及用户列表 (20)5.1.2文本聊天 (21)5.1.3文件传输功能 (24)5.2本章小结 (25)结束语 (26)参考文献......................................................... .27致谢. (29)第1章引言1.1课题背景近年来,随着全球信息化进程的不断发展,网络的发展也非常迅速。

基于winsocket的网络聊天室

基于winsocket的网络聊天室

else { MessageBox("地址绑定失败!", "提示"); }
客户端提出链接申请
• 客户端的套接字调用connect()函数来提出与服务器端的套接字建立连 接的申请,函数调用成功返回0,否则返回SOCKET_ERROR。函数 格式如下: • Int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR *name,int namelen); • 参数说明: • s:Socket的识别码 • name:Socket想要连接的对方地址 • namelen:name的长度监听 • 当服务器端的套接字对象绑定完成之后,服务器端需要建立一个监听 的队列 来接受客户端的连接请求。Listen()函数使服务器端的套接字 进入监听状态,并设定可以建立的最大连接数(目前最大限制为5, 最小值为一)。该函数调用成功返回0,否则返回SOCKET_ERROR。 • int listen(SOCKET s, int backlog); • s:表明一个已经绑定了地址,需要建立监听的套接字; • backlog:指定正在等待连接的最大连接个数; • 本程序在绑定端口时调用了此函数
服务器端的套接字调用完listen()函数后,等待客户端发出连接请求, 从而为客户提供服务。当客户端套接字建立完成后,调用connect()函数提 出一个与服务器建立连接的请求,如果服务器接受请求,则可以在服务 器的远程套接口与客户端的本地套接口之间建立一条连接。 服务器调用accept()函数完成建立连接,为了知道什么时候客户端提 出连接请求,从而服务器端的套接口在恰当的时候调用accept()函数完成 连接的建立,需要使用WSAAsyncSelect()函数,让系统主动通知有客户端 提出连接请求了。该函数调用成功返回0,否则返回SOCKET_ERROR。 此程序调用函数代码段: 客户端连接请求: //连接服务器 void CClientChatDlg::OnConnect() { closesocket(theApp.m_LocalSocket); theApp.m_LocalSocket = socket(AF_INET, SOCK_STREAM, 0); int nRet = WSAAsyncSelect(theApp.m_LocalSocket, AfxGetMainWnd()->m_hWnd, WM_SOCKET, FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE|FD_CONNECT); UpdateData(); sockaddr_in sockAddr; sockAddr.sin_family = AF_INET; sockAddr.sin_port = htons(m_nServerPort);

局域网聊天室系统的设计与实现毕业设计

局域网聊天室系统的设计与实现毕业设计

基于局域网的视频聊天室系统的设计与实现摘要视频聊天系统作为一种新型的通信和交流工具,突破了地域的限制,可以提供更为便捷、灵活、全面的音、视频信息的传递和服务,具有极其广泛的发展前景。

本文介绍了采用Microsoft Visual C++ 6.0编程开发视频聊天系统的一套比较常用的解决方案。

文字聊天采用TCP模式;语音视频聊天采用UDP模式,在客户端之间点对点的进行。

在该方案中,通过函数库VFW来实现视频捕获、影像压缩以及影像播放。

微软公司提供的专门用于视频捕获开发的工具包VFW,为在Windows操作系统中实现视频捕获提供了标准的接口,从而大大降低了程序的开发难度。

在视频传输方面,则通过组建视频帧,将位图形式的视频帧压缩成帧格式的Mpeg4流,传输到客户端后,解压并显示影像。

同时,在本方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转的文字聊天、点对点的语音视频聊天。

关键词:文字聊天;VFW;视频捕获;视频传输;语音录制;语音回放The Design and Realization of LAN-Based Video Chat RoomSystemAbstractAs a new tool about communication, video chatting system has broken through geographical restrictions, has provides more convenient, flexible and complete transmission and service. Furthermore, it has a very bright future.The common solution about how to develop a video chatting system is introduced by the Microsoft Visual C + + 6.0 programming. TCP model is used in the text chatting and UDP for the point-to-point video chats between the Clients. In this plan, Video Capture, Video Compression Manager and DrawDib are realized by the functions of VFW Library. The special kit VFW (Video for Windows) in video capture offered by Microsoft Corporation, has provided a standard interface for video capture in Windows Operating System and thus greatly reduced the hardship of programming. In video transmission aspect, it requires a video frame which is compressed the video frame of bitmap into Mpeg4 steam of frame form. Then it will be decompressed into images since it has been arrived the Client. Meanwhile, the thread is used to achieve audio recording and replaying. Finally, it has realized the text chatting through a server to transit, the point-to-point audio and video chats.Key words:text chatting; VFW; Video Capture; video transmission; audio recording;audio playing目录论文总页数:24页1 引言 (1)1.1 课题背景 (1)1.2 国内外研究现状 (1)2 理论知识介绍 (1)2.1 VFW简介 (1)2.2 线程的实现方法 (4)3 需求分析 (5)3.1 软硬件环境 (5)3.2 需求分析 (5)4 系统结构 (7)4.1 硬件结构 (7)4.2 软件结构 (7)4.2.1 功能需求 (7)4.2.2 系统功能模块图 (8)4.3 系统各模块流程图 (8)5 系统的详细设计 (10)5.1 文字聊天 (10)5.1.1 TCP套接字的运用 (10)5.1.2 文字聊天实现 (11)5.2 语音视频聊天 (13)5.2.1 UDP套接字的运用 (13)5.2.2 视频的捕获 (14)5.2.3 捕获窗口 (16)5.2.4 视频捕获驱动 (18)5.2.5 语音录制 (18)5.2.6 语音回放 (19)5.2.7 视音频的传输 (20)结论......................................................................................................... 错误!未定义书签。

基于TCPIP协议的网络通讯设计

基于TCPIP协议的网络通讯设计

基于TCPIP协议的网络通讯设计一、服务器架构设计:1. 服务器选择:选择适合的服务器系统作为主机,如Linux、Windows Server等。

2.网络拓扑结构:根据实际需求选择合适的网络拓扑结构,如星型、树状、网状等。

3.服务器配置:按照需求配置服务器硬件,包括处理器、内存、硬盘、网卡等。

4.服务器部署:选择合适的部署策略,如单台服务器、主从服务器、负载均衡服务器等。

二、通信过程设计:1.服务器启动:服务器启动后,监听指定的端口,等待客户端的连接。

2.客户端连接:当有客户端请求连接时,服务器响应并与客户端建立TCP连接。

3.数据传输:通过TCP连接,服务器与客户端之间可以进行双向的数据传输。

4.数据处理:服务器接收到客户端的数据后,进行相关的数据处理,如解析数据包、验证身份等。

5.业务逻辑处理:根据业务需求,服务器进行相应的业务逻辑处理,如数据库查询、文件读写等。

6.数据回传:服务器处理完业务逻辑后,将需要回传给客户端的数据发送回去。

7.连接断开:当客户端与服务器通信完成后,可以通过断开TCP连接来完成本次通信。

三、安全性措施设计:1.认证机制:服务器与客户端之间的通信可以基于用户名、密码等进行认证,确保通信的双方的身份安全。

2.数据加密:可以采用SSL/TLS等加密协议对数据进行加密,防止数据泄露和篡改。

3.防火墙配置:服务器可以配置防火墙,限制只允许特定IP地址或端口进行访问,保护服务器的安全。

4.安全日志:服务器记录安全日志,对重要的操作和异常事件进行记录,便于后期审计和追踪。

5.定期更新:定期更新服务器的操作系统和应用程序版本,及时修补已知的安全漏洞。

6.入侵检测和防御:服务器可以配置入侵检测和防御系统,对异常的网络流量和攻击行为进行检测和防御。

7.备份和恢复:定期对服务器的数据进行备份,以防止数据丢失,同时也能够快速恢复服务器的状态。

综上所述,基于TCP/IP协议的网络通讯设计需要考虑服务器架构、通信过程和安全性措施等多个方面,以确保服务器的高可用性、安全性和稳定性。

基于tcp的聊天程序设计

基于tcp的聊天程序设计

基于tcp的聊天程序设计基于TCP的聊天程序设计随着互联网的普及,人们的交流方式也在不断改变。

现在,无论是个人还是企业,都离不开网络通讯。

而聊天程序则是网络通讯中最为重要的一种应用。

基于TCP的聊天程序设计,可以实现用户之间的即时通讯,为人们提供更为方便快捷的交流方式。

TCP是传输控制协议,它是一种面向连接的协议,可保证数据的可靠传输。

基于TCP的聊天程序设计,要实现即时通讯,需要满足以下几个要点:1. 建立连接在TCP协议中,建立连接是非常重要的一步。

客户端和服务端都需要先进行连接,才能进行数据传输。

在聊天程序中,客户端需要输入服务端的IP地址和端口号,与服务端建立连接。

建立连接后,客户端和服务端就可以进行数据传输了。

2. 用户登录聊天程序需要实现用户登录功能,用户需要输入用户名和密码才能登录。

服务端需要验证用户的身份信息,如果验证通过,则将用户加入到聊天室中。

客户端可以通过聊天室查看在线用户列表,并向指定用户发送消息。

3. 发送消息聊天程序的核心功能就是发送消息。

用户可以向指定用户发送消息,也可以向聊天室发送消息。

当用户发送消息后,服务端需要将消息转发给指定的用户或者聊天室中的所有用户。

客户端在接收到消息后,需要将消息显示在聊天窗口中。

4. 文件传输除了发送文本消息外,聊天程序还需要支持文件传输功能。

用户可以选择要传输的文件,并发送给指定用户或者聊天室中的所有用户。

服务端需要接收文件,并将文件转发给指定的用户或者聊天室中的所有用户。

客户端需要在接收到文件后,将文件保存到指定的本地目录中。

基于TCP的聊天程序设计,需要考虑到以下几个方面:1. 安全性聊天程序中涉及到用户的身份信息和聊天内容,所以安全性是非常重要的。

服务端需要对用户的身份信息进行验证,并对聊天内容进行加密,防止被黑客攻击。

客户端也需要对用户的身份信息进行保护,并对接收到的消息进行解密。

2. 可扩展性聊天程序需要支持多用户同时在线,所以需要考虑到可扩展性。

基于TCP的网络通信协议设计毕业论文

基于TCP的网络通信协议设计毕业论文

基于TCP的网络通信协议设计毕业论文目录ABSTRACT ..................................................................................................................... 错误!未定义书签。

第一章绪论.. (1)1.1 项目开发背景和意义 (1)1.2 开发和运行环境 (1)第二章开发工具简介 (1)2.1 Visual C++6.0介绍 (1)2.2 MFC (1)2.3 MSDN (2)2.4 Visual Assist X (3)第三章协议设计涉及知识简介 (1)3.1 即时通讯 (1)3.2 网络协议 (2)3.3 OSI七层网络模型 (2)3. 4 TCP/IP协议 (3)3.5 TCP传输 (4)3.6 C/S编程模型 (4)3.7 Socket套接字 (5)3.8 网络字节顺序 (6)3.9 Windows Sockets (6)3.10 同步、异步、阻塞和非阻塞 (7)3.11 多线程 (7)第四章需求分析 (10)4.1 整体需求分析 (10)4.2 可行性分析 (10)第五章概要设计 (11)5.1 性能要求 (11)5.2 通讯协议格式设计 (11)5.3 软件工作模式图 (12)5.4 软件设计原理 (12)第六章详细设计 (15)6.1 协议设计 (15)6.2 服务器端工程设计 (17)6.3 客户端工程设计 (22)6.4多线程设计(一台服务器与多个客户端通信) (31)6.5 协议工作设计 (34)第七章系统测试 (42)7.1 测试目的 (42)7.2 测试要求 (42)7.3 测试方法 (42)7.4 系统测试 (43)总结................................................................................................................................ 错误!未定义书签。

Linux下用GTK+和MySQL开发基于TCP/IP的网络聊天室

Linux下用GTK+和MySQL开发基于TCP/IP的网络聊天室
陈特放 , 黎 丹
( 大学信息科学与工程学院 , 中南 湖南 长 沙 408) 1 3 0
摘 要 : Lnx平 台下采用两种 高级环境 GP 2 0和 M S L设计基于 T P I 网络聊 天室 , 在 iu ' K+ . yQ C /P的 利用 L u 操 作 系统的 ix n
多线程技术和套接字编程技 术 . G K+ . M S L开发数据库关键技 术, 细说 明 了系统的通信原理和软件 的设计与 用 ' 2 0和 yQ P 详
维普资讯
第2 0卷
第 5期


Байду номын сангаас




Vo . 0 No 5 I2 . S p. e 2 00 6
200 6年 9月
J OURNA OF CHA l NGSHA UN~ER T SrY
L n x下 用 GT +和 My QL 开 发 基 于 T P I iu K S C / P的 网 络 聊 天 室
av cdG K+2 0a dMyQ s gm ltr d gt h o g dSce t h o g i x Irf s e h da e T n . S Lum u i e i cnl y okte nl yi Ln . t e r kyt - n t an e h o a n c o n u e e c nl i vl i t aei G K+ adMyQ . t cm ui t npi il ads ta ei dipe et o ge o d e p gd a s T o sfe o n ab n n S L I o m nc i r c en f r ds n l n s ao n p o e g a m m w n

基于TCPIP协议的实时语音聊天系统的实现

基于TCPIP协议的实时语音聊天系统的实现
首先对实时聊天系统流程进行分析,流程分析是整个系统根本,它给出了语音是怎样从一台电脑捕获并发送至另一台电脑的整个过程。一般实时语音聊天系统应该包括:建立连接、音频捕获、音频发送(包括音频压缩)、音频接收、音频回放(包括音频解压)五个部分。其总体流程如图2-3。
图2-3语音通信总体流程图
2.5.2语音通信系统功能模块需求分析
基于
引言随着通信网络技术的发展,人们之间的交流方式越来越方便,文本聊天已经不能满足人们节奏日益加快的生活,语音聊天的技术变得不可或缺。即时通信自从上世纪80年代末出现以来,即时通信逐渐涵盖了微博、音乐、电子邮件、视频、游戏和搜索等多种功能。目前市面使用较多的即时通信软件包括微博、微信、腾讯QQ、YY、Facebook等等,就连支付宝和淘宝等软件也增添了加好友聊天的新功能。
纯P2P模型中资源随机地分布在系统所有的节点中,每个节点的请求都会被广播给全部和它直接连接的节点,如果这些节点中都不包含所请求的文件,这些节点就会把这个请求接着广播给全部和它们直接连接的节点,直到搜寻到所请求的文件或者广播的次数超过了某个数值为止。
混合式P2P凝聚了中心化P2P和纯P2P各自的优点,选择性能(处理、存储、带宽等方面)较高的节点当作超级节点,在所有超级节点中储存了系统中其它节点的信息,混合式P2P中,搜索数据包仅在超级节点之间转发,由超级节点将搜寻到的请求转发给合适的叶子节点。
套接字能看作在两个程序之间进行通信连接中的一个中间点,连接应用程序和网络驱动程序,在应用程序中创建的套接字与网络驱动之间通过绑定建立关系后,应用程序给套接字传送的数据,再从套接字网络驱动程序发送到网络中。电脑从网络上收到与该套接字绑定IP地址和端口号相关的数据后,由网络驱动程序交给套接字,应用程序就能够从套接字中提取接收到的数据,这就是网络应用程序通过套接字进行数据收发的过程。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于TCP的网络
聊天室的设计
【基于TCP的网络聊天室的设计】-实验指导
∙一、实验目的
1.掌握通信规范的制定及实现。

2.练习较复杂的网络编程,能够把协议设计思想应用到现实应用中。

1.二、实验内容和要求
1.进一步熟悉VC++6编程环境;
2.利用VC++6进行较复杂的网络编程,完成网络聊天室的设计及编写;
三、实验(设计)仪器设备和材料
1.计算机及操作系统:PC机,Windows;
2.网络环境:可以访问互联网;
∙四、TCP/IP程序设计基础
基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两
部分。

设计思路(VC6.0下):
第一部分服务器端
一、创建服务器套接字(create)。

二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。

三、接受来自用户端的连接请求(accept)。

四、开始数据传输(send/receive)。

五、关闭套接字(closesocket)。

第二部分客户端
一、创建客户套接字(create)。

二、与远程服务器进行连接(connect),如被接受则创建接收进程。

三、开始数据传输(send/receive)。

四、关闭套接字(closesocket)。

CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上Windows Socket选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。

)???
(1)构造CSocket对象,如下例:
CSocket ServerSocket;
CSocket ClientSocket;
(2)CSocket对象的Create函数用来创建Windows Socket,Create()函数会自行调用Bind()函数
将此Socket绑定到指定的地址上面。

如下例:
ServerSocket.Create(823); //服务器端需要指定一个端口号,我们用823。

ClientSocket.Create(); //客户端不用指定端口号。

(3)现在已经创建完基本的Socket对象了,现在我们来启动它,对于服务器端,我们需要这个Socket 不停的监听是否有来自于网络上的连接请求,如下例:
ServerSocket.Listen(5);//参数5是表示我们的待处理Socket队列中最多能有几个Socket。

(4)对于客户端我们就要实行连接了,具体实现如下例:
ClientSocket.Connect(CString SerAddress,Unsinged int SerPort);//其中SerAddress是服务器
的IP地址,SerPort是端口号。

(5)服务器是怎么来接受这份连接的呢?它会进一步调用Accept(ReceiveSocket)来接收它,而此时服务器端还须建立一个新的CSocket对象,用它来和客户端进行交流。

如下例:
CSocket ReceiveSocket;
ServerSocket.Accept(ReceiveSocket);
(6)如果想在两个程序之间接收或发送信息,MFC也提供了相应的函数。

如下例:ServerSocket.Receive(String,Buffer); //String是你要发送的字符串,Buffer是发送字符串的缓冲区大小。

ServerSocket.Send(String,Butter);//String是你要接收的字符串,Buffer是接收字符串的
缓冲区大小。

框架实现:
客户端在MFC中创建对话框:
void CClientDlg::OnButtonReceive()
{
CString strAddr="202.112.73.150";
unsigned int nPort=5050;
if(!ChatReceive.Create())
{
MessageBox("create failed","Receive",MB_ICONSTOP);
return;
}
else
{
ChatReceive.Connect(strAddr,nPort);
}
char sReceive[1024];
strAddr.Format(sReceive);
ChatReceive.Receive(sReceive,1024,0);
m_strEdit=sReceive;
UpdateData(FALSE);
ChatReceive.Close();
}???
服务器端创建对话框:
void CServerDlg::OnButtonSend()
{
// TODO: Add your control notification handler code here
CString strSendText;
unsigned int nPort=5050;
GetDlgItemText(IDC_EDIT,strSendText);
if(!ChatSend.Create(nPort))
MessageBox("create failed");
else
{
ChatSend.Listen();
ChatSend.Accept(server);
}
server.Send(strSendText,1000,0);
server.Close();
ChatSend.Close();
}??
五、基于TCP的网络聊天室的设计要求:?
(1)制定通信规范。

(2)设计界面如下:
1 服务器端
2 客户端
(3)设计思路:
①TCP/IP数据通信--- “聊天”消息传输格式
客户机-à服务器
(ⅰ)传输“用户名”
STX+1+用户名+ETX
(ⅱ)悄悄话
STX+2+用户名+”,”+内容+ETX
(ⅲ)对所有人说
STX+3+内容+ETX
? ?服务器-à客户机
(ⅰ)首次传输在线用户名
STX+1+用户名+ETX
(ⅱ)传输新到用户名
STX+2+用户名+ETX
(ⅲ)传输离线用户名
STX+3+用户名+ETX
(ⅳ)传输聊天数据
STX+4+内容+ETX
(注:STX为CHR(2),ETX 为CHR(3))
②服务器端
(ⅰ)定义一个动态数组存储连接用户。

定义一个全局变量存储连接用户的元素个数。

(ⅱ)用一个使用UDP协议的SOCKET套接字完成发送服务器IP地址。

在该控件的数据接收事件中发送服务器IP地址
(ⅲ)用一个使用TCP协议的SOCKET套接字数组完成TCP连接及数据发送和接收,处理它的连接请
求事件。

(ⅳ)SOCKET套接字的数据到达事件中首先接收数据到一个变量中,然后从这个变量中逐个提取消息,
并对每个消息判断消息类型及做相应处理:
case? 类型1??? ……传输“用户名”
修改用来存储连接用户的元素个数的数组
向所有在线用户发送该用户名消息
向该用户发送所有在线用户名的消息
case 类型2?? ……悄悄话
向源和目标用户发送消息
case 类型3?? ……对所有人说
向所有在线用户发送消息
(ⅴ)服务器端的断开连接事件中
修改存储连接用户的元素个数的数组,卸载此控件,向所有在线用户发送消息离线。

③客户端
(ⅰ)添加一个SOCKET套接字,窗体加载时使用UDP协议,发广播数据报;等待接收到服务器主机
地址后使用TCP协议完成连接及数据传送。

(ⅱ)在客户端的数据到达事件中接受数据,如果客户端协议使用的是UDP协议,关闭客户端连接,重新设置客户端的协议、远程端口号、本地端口等参数,再调用连接方法请求连接,输入用户名,连接成功时发送用户名消息。

否则,从接受的数据字符串中逐个提取消息,并对每个消息判断消息类型及做相应处
理:
case 类型1??? ……首次传输在线用户名
将用户名加入到用户列表中;
case 类型2??? ……首次传输在线用户名
将用户名加入到用户列表中;
在聊天内容中添加该用户名加盟;
case类型3??? ……传输离线用户名
从用户列表中删除该用户名
在聊天内容中添加该用户名退出;
case类型4??? ……传输聊天数据
在聊天内容中添加聊天数据;
(ⅲ)在命令按纽触发事件中发送聊天内容
根据用户列表中的当前用户决定消息类型,并发送聊天数据。

1.六、实验报告要求
提交一篇关于本设计的论文,字数不少于1000字,论文内容需包含如下几项内容。

一、系统概要
二、通信规范的制定
三、主要模块的设计分析
四、系统运行效果(要求有屏幕截图)
五、心得与体会
要求采用学校的实验报告书(16开),并提交设计的论文的电子版(用E-Mail发送到邮箱
genechen@)。

相关文档
最新文档