精华内容
下载资源
问答
  • 2021-02-05 13:38:25

    局域网聊天软件设计与实现(,C++,MySQL)(任务书,中期检查报告,外文翻译,毕业论文16000字,程序代码,MySQL数据库,答辩PPT)

    摘   要

    局域网聊天软件是在LINUX系统下运行的一个应用程序,程序用c++语言编写。本程序有如下功能:用户列表自动刷新、通过TCP通信协议进行消息收发、MYsql数据库保存用户名与密码。该设计是一个简单的局域网聊天软件,适用于企业内部和实验室使用,不与互联网进行数据交换,具有高速、安全等优势。

    本文着重介绍下列内容:对用户上下线消息通知、聊天消息收发等进行数据解析;TCP网络编程,讲述用TCP    创建Client和Server以及收发数据的实现;最后对本设计的具体实现方法和设计实现流程进行讲解以及程序运行分析。

    关键词: LINUX;TCP;Socket;Mysql数据库;C++

    The Design And Implementation of The LAN Chat Software

    Abstract

    The LAN chat tool is An application under LINUX.The application written by C++ language.This program has the following functions: sending broadcast when login and exit,sending and receiving messages by the TCP communication protocol, using MYsql database to save chat messages. it is most often used to chat in enterprise and laboratory, it is working without data exchange from Internet,so it can transmit data high speed and security.

    This paper focuses on the following contents: the user online and offline message notification, chat message send and receive data analysis; TCP network programming, here tells the method of using TCP to create client and Server to send and receive data;Finally introduce the design method and implementation process of my graduation design and running the application.

    Keywords: LINUX;TCP/IP;Socket;Mysql database;C++

    需求分析

    本项目基于LINUX系统实现在局域网内的聊天软件,软件分为服务端和客户端,要实现的功能如下。

    服务器端:

    (1)能够正确的启动服务器。

    (2)能够监听指定的端口,来等待用户的连接。

    (3)客户端注册时能通过数据库验证用户的注册信息,并把注册结果返回给客户端。

    (4)客户端登陆时能通过数据库验证用户的登陆信息,登陆成功后,把此用户的登录消息通知其他好友。

    (5)登陆成功时,能够向新连接的用户发送已上线的用户名单。

    (6)能够接收客户端的群聊消息请求,并能正确无误地处理请求,并把消息发送到所有已登录的客户端。

    (7)能够接受客户端的私聊消息请求,并能正确无误地处理请求,并把消息发送到特定的客户端。

    (8)当用户断开与服务器端地连接时,服务器能够把连接正确的断开,并把该用户退出的消息通知其他用户。

    (9)能够正确的关闭服务器。

    客户端:

    (1)能够启动应用程序,并与服务器建立连接。

    (2)登陆界面,能够把登录信息正确的发送到服务器。

    (3)能够正确的处理服务器反馈的登结果信息。

    (4)注册界面,能够把注册信息正确的发送到服务器。

    (5)能够正确的处理服务器反馈的注册结果信息。

    (6)登录以后,能够自动的更新用户列表。

    (7)能够把群聊消息正确的发送到服务器。

    (8)能够正确的把群聊消息显示到群聊界面。

    (9)能够把私聊消息正确的发送到服务器。

    (10)能够正确的把私聊消息显示到特定的聊天窗口。

    (11)客户端退出时,能够把该用户的退出消息发送到服务器,并关闭所有聊天窗口。

    535110831cf143026fb592720e2cb376.png

    fe27ca3f2018c1b557e70d99f8a202d3.png

    5f7ef06ce6cf6e0bc9df7d9b7ae2443a.png

    1428d8672563017a3f05a4bd87154ea4.png

    e723ec032f2525d54cf2472ebf8c76f3.png

    硬件环境:

    CPU:Inter(R) Core(TM) i5 2.67GHz

    内存:2.00 GB

    硬盘:500 G

    软件环境:

    操作系统:Ubuntu 12.0.4

    应用软件:QT 5.0.2

    目录

    摘   要    i

    Abstract    ii

    1  绪论    1

    1.1  课题背景    1

    1.2  目的和意义    1

    1.3  研究现状    1

    2  系统分析    3

    2.1  系统理论基础    3

    2.1.1  C/S架构    3

    2.1.2  TCP    3

    2.1.3  Socket    4

    2.1.4  QT编程框架    6

    2.2  可行性研究    10

    2.3  需求分析    11

    2.4  系统运行环境    11

    3  系统设计    12

    3.1  系统结构设计    12

    3.2  客户端服务器功能设计    12

    3.3  客户端设计    13

    3.4  服务器端设计    14

    3.5  群聊和私聊模块的设计    16

    4  程序描述与详细描述    17

    4.1  服务器端验证客户端的登录信息    17

    4.1.1  功能及实现    17

    4.1.2  技术概要    18

    4.2  服务器端处理用户消息    20

    4.2.1  功能及实现    20

    4.2.2  技术概要    21

    4.3  客户端读取服务器发送的数据    23

    4.3.1  功能及实现    23

    4.3.2  技术概要    25

    4.4客户端用户列表的更新    25

    5  系统实现    27

    5.1  登录模块设计    27

    5.2  注册模块设计    28

    5.3  群聊模块设计    29

    5.4  私聊模块设计    32

    结论    34

    参考文献    35

    致谢    36

    更多相关内容
  • 局域网聊天软件

    2018-11-16 12:15:30
    局域网聊天软件
  • 转载自http://blog.csdn.net/baolong47/article/details/6735853 整合在springboot中
  • 利用VC++6.0和UDP协议,使用资源消耗少,使用方便灵活的对等模式,设计出了一个局域网聊天软件.该软件在通信过程中,用户的地位是平等的.软件的聊天通信部分采用基于异步套接字SOCKET编程,极大地减少了对系统资源的...
  • 本作品完全开源,为我的毕业设计,能支持 语音,录音,文件,文字功能。 详细介绍请看http://blog.csdn.net/cq361106306/article/details/38318663 如有不足之处请大家多多评论点播
  • 这是我在大连东软集团实习时做的项目,一个基于linux下的局域网聊天软件,采用了C/S结构,界面别具一格,并实现了文件传输功能,能实现消息离线传送、发送表情、文件传输等功能,开发工具为codeblocks和glade。
  • ubuntu局域网聊天软件

    2011-11-18 17:56:17
    基于linux的局域网聊天软件,可实现群聊,私聊,查看聊天记录以及超级用户功能。
  • 1. 资源是本人使用Qt5开发的一款局域网聊天软件,支持群聊、私聊、收发消息和文件,用户进入离开提示、查看局域网成员、界面换肤、多用户登录等; 2. 目前该软件不足的就是有很多小bug(程序还是可以正常运行的),...
  • 嵌入式linux局域网聊天软件

    千次阅读 2020-07-04 09:47:32
    嵌入式linux局域网聊天软件 设计内容概述 采用Client/Server架构,可以同时连接5个用户,每个用户最多可以拥有20个好友,最多可以加10个群聊,文件传输的限制字节为4096,缓存机制消息最大为50,在这些限制之内可以...

    嵌入式linux局域网聊天软件

    设计内容概述

    采用Client/Server架构,可以同时连接5个用户,每个用户最多可以拥有20个好友,最多可以加10个群聊,文件传输的限制字节为4096,缓存机制消息最大为50,在这些限制之内可以实现如下功能:

    • 注册(用户名不重复):选择注册功能,输入账号密码,即可进行账号注册。
    • 登录(单个用户登录,密码输入不可见):用户登录时,输入账号和密码,与服务端储存的信息进行匹配,匹配成功即可登录,匹配失败显示错误信息。
    • 注销(无需再次运行程序便可登录):在功能菜单中可以退出登录。
    • 私聊(仅能对好友进行):用户选择私聊功能后,提示输入用户想要私聊的另一个用户名,然后提示要发送的消息,用户输入后,显示消息发送,处理成功后消息发送到目标用户。目标用户会接受的此消息。
    • 群聊(只能对所在群组进行):用户选择群聊功能后,提示输入用户想要发起群聊的群组名称,然后提示要发送的消息,用户输入后,显示消息发送,处理成功后消息发送到目标群聊用户。群聊的目标用户均会收到此消息。
    • 聊天记录查询(只能获取好友和所在群组的):聊天记录保存在特定的文件中,可以查看私聊、群聊聊天记录。用户选择查看聊天记录功能后,提示输入用户想要查看得聊天记录文件的名称,用户输入后,即可打开聊天信息文件,查看聊天记录。
    • 文件传输(简易版shell寻找文件,分群组和私聊文件传输):可以向好友发送指定文件。用户选择查看文件传输功能后,提示输入用户想要发送文件的另一个用户名,用户输入后,提示用户想要发送文件的文件名称,输入文件名后即可发送。接受方收到文件后,会将此文件保存在特定的文件夹中。
    • 服务端消息和文件传输缓存机制:缓存好友和群组发送的离线文件和消息,待该用户登陆后由服务器返回历史消息。

    开发工具及运行环境概述

    	开发工具:Clion2020.1
    	运行环境:deepin15.11 Desktop
    	编译环境:gcc( Debian 6.3.0-18+deb9u1)6.3.0 20170516
    	编译文件:makefile
    

    在这里插入图片描述

    注册

    【1】client端输入用户名和密码 -> 存于消息结构体mess中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户名密码的文件(server/data/user.txt) -> 验证文件中是否已存在该信息 -> 若无,将用户信息存入文件 ->返回注册消息(已存在该用户,重新注册||注册成功)。
    2.2登录
    【1】client端输入用户名和密码 -> 存于结构体中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户名密码的文件(server/data/user.txt) -> 读取文件验证用户信息。
    【3】server端匹配正确发送“登陆成功!”消息,匹配失败根据输入的内容判定提示(“密码错误!”、“用户名不存在,请注册新用户”、“用户已登录,请勿重复登录”)消息 -> client端接收,“登陆成功!”则进入功能菜单,其余则继续循环注册登录的菜单。
    【4】若验证成功,server端产生一个新的套接字newfd,将它与用户名封装于同一个结构体中,存储在线用户的信息。将用户信息存入链表中,表示为在线用户。
    消息、存储在线用户信息结构体:

    Client Server消息结构体 (all.h)

    私聊

    【1】client端后台发送好友列表请求信息 -> 存于结构体中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户好友信息的文件(server/data/friends/用户名.txt) -> 读取文件返回好友信息。
    【3】client端接收server发送的结构体 -> 分离线程处理打印传输回来的好友信息。
    【4】client端将发送好友对象和消息内容-> 存入发送的结构体中 -> 将结构体发送给server端。
    【5】server端接收client发送的结构体 -> 根据接收者名字在online的链表中查找套接字描述符(若不在线将消息和日志信息存入服务端,待接受者登陆后将消息转发) -> 将消息发送给该接收者client端。
    【6】client端接收server发送的结构体 -> 分离线程处理打印传输回来的好友消息。

    群聊

    【1】client端后台发送群组列表请求信息 -> 存于结构体中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户群组信息的文件遍历查找该用户所在的群组(server/data/groups/group*.txt)-> 返回群组信息。
    【3】client端接收server发送的结构体 -> 分离线程处理打印传输回来的群组信息。
    【4】client端将发送群组对象和消息内容-> 存入发送的结构体中 -> 将结构体发送给server端。
    【5】server端接收client发送的结构体 -> 根据群组所有接收者名字在online的链表中查找套接字描述符(若不在线将消息和日志信息存入服务端,待接受者登陆后将消息转发) -> 将消息存入消息结构体发送给该接收者client端。
    【6】client端接收server发送的结构体 -> 分离线程处理打印传输回来的群组消息。

    聊天记录查询

    【1】client端选择文件传输对象的类型(friend||group),后台发送所选类型列表请求信息 -> 存于结构体中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户群组(好友)信息的文件遍历查找该用户所在的群组(好友)(server/data/groups/group*.txt||server/friends/用户名.txt)-> 返回群组||好友信息。
    【3】client端接收server发送的结构体 -> 分离线程处理打印传输回来的群组||好友信息。
    【4】client端将查询对象(群组||好友)-> 存入发送的结构体中 -> 将结构体发送给server端。
    【5】server端接收client发送的结构体 -> 根据查询对象读取server端的消息记录文件(server/records/groupchat/group*.txt|| server/records/ privatechat /用户1_用户2(根据字符串大小排序).txt) -> 将文件内容存入消息结构体发送给该接收者client端。
    【6】client端接收server发送的结构体 -> 分离线程处理打印(保存)传输回来的群组消息(文件)。

    文件传输

    【1】client端选择文件传输对象的类型(friend||group),后台发送所选类型列表请求信息 -> 存于结构体中 -> 将结构体发送给server端。
    【2】server端接收client发送的结构体 -> 打开存储用户群组(好友)信息的文件遍历查找该用户所在的群组(好友)(server/data/groups/group*.txt||server/data/friends/用户名.txt)-> 返回群组||好友信息。
    【3】client端接收server发送的结构体 -> 分离线程处理打印传输回来的群组||好友信息。
    【4】client端将发送对象(群组||好友),简易shell读取发送文件的路径和内容 -> 存入发送的结构体中 -> 将结构体发送给server端。
    【5】server端接收client发送的结构体 -> 根据群组所有接收者名字(好友的名字)在online的链表中查找套接字描述符(若不在线将消息和日志信息存入服务端,待接受者登陆后将消息转发) -> 将消息发送给该接收者client端。
    【6】client端接收server发送的结构体 -> 分离线程处理打印(保存)传输回来的群组消息(文件:保存在特定的文件夹中)。

    系统设计流程图

    在这里插入图片描述

    系统使用方法

    makefile编译

    makefile编译

    运行-注册-登录

    运行登录注册

    私聊

    私聊

    群聊

    群聊

    文件传输(私聊&群聊)

    私聊文件传输
    群聊文件传输

    在线人员

    在线人员

    好友&群组聊天记录查询

    好友&群组聊天记录查询

    Sever端离线缓存机制

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    代码

    代码较多,感兴趣的同学可以点击链接下载(https://download.csdn.net/download/lzj_feifei/12575318)。

    参考网站和不足

    聊天室的底层参考的第一位博主的代码,文件传输的简易shell参考的第二位博主的代码(后续补上,有点找不到了,如果是博主看到的话请联系我给您加上):

    准备过程之中有些许的失误,过于重视逻辑功能的完备性,忽视了界面的制作的重要性,不占视觉的优势。基础的功能调试花费了过长时间,后面部分功能(会用到前面功能的部分:服务端离线消息处理调用私聊的函数)应该单拉出来写函数,调用之前函数比较混乱,导致功能和bug修改困难,但是其余部分功能都完成的比较顺利。
    再就是对软件的应用存在一定的意识缺乏,仅将Clion作为写代码的工具,没有充分利用DeBug功能;起初有过将界面和浏览器网页融合和云服务器运行服务端以及功能设计特色等想法,但也只是停留在了最后的功能设计上,总之只要有想法,并付出实践,想法就可以实现,这就是编程的魅力所在。

    展开全文
  • 实现了不同客户端之间互相收发信息的功能
  • 内容索引:C#源码,网络相关,仿QQ,聊天工具 落雪无痕编写的C#版局域网聊天软件,界面仿QQ,可以显示好友IP地址,好友形象,好友上线提示,和QQ一样的功能;程序要用到SQL数据库,程序包中附有数据库文件,附加即可,...
  • 创建局域网聊天软件.doc
  • 2 - PAGE I 商丘工学院 毕业论文设计 题目局域网聊天软件 系 院 学生姓名 学 号 专 业软件技术 指导教师 2013年4月 局域网聊天软件 商丘工学院毕业论文设计 PAGE II 摘 要 在网络越来越发达的今天人们对网络的依赖...
  • 4. 保存和查看聊天记录,仅可查看自己保存的聊天记录,保存和读取聊天记录时需要使用文件锁; 保存和查看聊天记录,聊天记录保存在“./msgsave_昵称”文件中(“昵称”为保存者自己的昵称); 5. 服务器的出错信息打印...
  • Linux_基于socket的局域网聊天软件的设计与实现.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,950
精华内容 5,980
关键字:

局域网聊天软件