基于c-s网络聊天室报告

基于c/s网络聊天室报告

网络聊天室实现报告

一、 背景知识

在传统生活里,人们利用写信、电话等方式联络,但此类方式周期缓慢,呆板且不可靠。在这个信息极其发达的时代,随后我们可以用来进行信息交流的方法日益增多,比如电报、电话、电子邮件、OICQ等通讯手段,但是这些或者不方便或者有局限性或者有费用的问题。

近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面,使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。

网络聊天室凭借其友好的外观、强大的功能、使用的便利、联系的及时等特点博得现代人的青睐,其应用的市场十分广阔。本系统使用的是C/S模式,使用C#进行聊天室的设计与开发。

本文主要介绍了所应用到的技术的基础知识,并探讨了建立聊天室的设计思想、方法与功能实现流程图。本文所实现的聊天室具有良好的人机交互界面、合理的数据库结构可以实现发言、自动显示所在聊天室的成员等交互功能,经过测试调试,证明可实际应用。下图为网络聊天室的主界面

图1 网络聊天室主运行界面图

二、 核心算法思想

实现一个基于Socket的简易的聊天室,实现的思路如下:

聊天室服务器端启动服务器时,将创建侦听套接字,创建用户列表,创建并启动侦听线程。用户登录时,将创建套接字,与服务器直接连接,并创建客户端接收线程。服务器端侦听到有用户上线后,

将创建新的用户节点,并在主界面上显示用户上线,发送新的用户列表。客户端发送信息时,将要发送的内容进行发送。服务器端发送信息时,如果是发送给所有人,就遍历用户链表,如果是发送给某个用户,先在链表中找到该节点,再发送信息。服务器端和客户端接收信息时,先读取聊天信息标识,做出判断后,依次读取信息,处理信息,并在主界面上显示,服务器端还要将准备好的信息发送给指定的用户。

开启客户端主界面后,就会启动文件接收侦听线程,如果有用户发送文件至此,将会有信息提示,确定接收后,将启动文件接收线程,对方用户端将启动文件发送线程。

服务器端侦听到有用户下线后,将删除该用户节点,并在主界面上显示用户下线,发送新的用户列表。服务器端停止服务后,也会向客户端发送服务器已关闭的信息,客户端将不再可以聊天。

程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能。

实现的细节:服务端启动一个监听套接字。每一个客户端连接到服务端,都是开启了一个线程,线程函数是封装了通信套接字,来实现与客户端的通信。多个客户端连接时产生的通信套接字用一个静态的Dictionary保存。下面讲述几个重要概念:

套接字基本概念:

套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。

套接字工作原理:

要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

三、 核心算法流程图

(1)在服务器上运行服务器端的应用程序,该程序一运行就开始服务器监听。然后,在客户机上就可以打开客户端的应用程序。程序打开后可以与服务器端应用程序进行连接,即进行客户端请求。

图2 服务端与客户端互连流程图

(2)服务器运行原理:

当有客户端连接聊天室服务器后,服务器立刻为这个客户建立一个数据接收的线程

java c/s网络聊天室,基于c-s网络聊天室报告.doc相关推荐

  1. 单片机c语言数字频率计课程设计,基于单片机的数字频率计设计开题报告.doc

    基于单片机的数字频率计设计开题报告.doc 皖西学院本科毕业设计(论文)开题报告学院信息工程学院专业通信工程学生姓名裴晓晴学号2010013513指导教师傅思勇职称助教毕业设计(论文)题目基于单片机的 ...

  2. java web系统毕业论文_毕业论文--基于JavaWeb的网络购物中心系统的实现.doc

    毕业论文(设计) 题 目: 基于JavaWeb的购物网络中心系统 完 成 人: 班 级: 学 制: 专 业: 指导教师: 完成日期: 目 录 26014 摘 要( 1) 0 TOC \o " ...

  3. python网络爬虫技术-基于Python的网络爬虫技术综述

    汪洋 姜新通 [摘 要]人类社会已经进入大数据时代,这正在改变着我们的工作和生活.随着互联网的兴起和发展,同时也产生了各种对人类有价值的数据.快速搜索数据和充分利用数据信息已成为一个巨大挑战.这样的需 ...

  4. c语言张振国实验报告,基于VisualC的黄金分割法程序设计实验报告.doc

    基于VisualC的黄金分割法程序设计实验报告 新疆农业大学机械交通学院 实验报告 基于Visual C 的黄金分割法程序设计 一 .实验目的 1. 加深对机械优化设计方法的基本理论和算法步骤的理解: ...

  5. 基于matlab的mimo仿真,基于MATLAB的MIMO通信系统仿真报告.doc

    基于MATLAB的MIMO通信系统仿真报告 北京邮电大学 基于Matlab的MIMO通信系统仿真 班级: 姓名: 学号: 日 期: 目录 一. 概述3 (1)课设目的3 (2)数字通信系统概述3 二. ...

  6. java做校园一卡通技术_基于JAVACARD校园一卡通设计及实现.doc

    基于JAVACARD校园一卡通设计及实现 基于JAVACARD校园一卡通设计及实现 摘 要自"智能卡"问世后,就广泛的应用于生活当中,很大程度上便捷了人们的生活,但在"智 ...

  7. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc

    PAGE \* MERGEFORMAT 3 河海大学物联网工程学院 课程设计报告 题 目 基于LCD的电子时钟实验 专业.学号 电信 . 授课班号 完成时间 2013.07.05 课程设计(报告)任务 ...

  8. 基于51单片机的光照强度检测c语言程序,智能仪器课程设计-基于51单片机的光照强度检测报告.doc...

    该设计论文已经通过各大高校老师审核认可并通过答辩,.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 课程设计报告 课程名称: 智能仪器课程设计 题 目: 基于51单片机的光照强度 摘要 ...

  9. Java进阶:基于TCP的网络实时聊天室(socket通信案例)

    目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...

  10. 经典论文复现 | 基于深度卷积网络的图像超分辨率算法

    过去几年发表于各大 AI 顶会论文提出的 400 多种算法中,公开算法代码的仅占 6%,其中三分之一的论文作者分享了测试数据,约 54% 的分享包含"伪代码".这是今年 AAAI ...

最新文章

  1. 操作系统常用词典(二)
  2. jQuery常用技巧
  3. SCons: A software construction tool
  4. 读取nacos_使用nacos配置多环境切换
  5. 多示例学习 MIL(multiple instance learning) 理解
  6. url传值的一个问题解决
  7. 研究svg编辑器过程中遇到的问题总结
  8. 现代优化算法:遗传算法
  9. 用c语言打印乘法口诀表
  10. I2C | i2c_msg
  11. 【2017NOIP普及组】T4:跳房子 试题解析
  12. 〖Python自动化办公篇⑫〗- Excel 文件自动化 - 读取 excel 数据
  13. 酷狗免费下载歌曲(网易云同样适用)
  14. ps-混合模式使用技巧
  15. pandas基础篇一
  16. 最全MySQL8.0实战教程 2 SQL语言基础
  17. ROS2 Foxy 安装
  18. 基于HDP版本的YDB安装部署(转)
  19. 问题解决:VScode高CPU占有率 Microsoft.VSCode.CPP.Extension.darwin
  20. 超爽的对战游戏2.0版本来了 非常有趣

热门文章

  1. 对封装、继承、多态的简单理解
  2. 5.视频监控 - 摄像头接口
  3. 互联网上好的博客博主
  4. matlab求两向量夹角_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...
  5. 一篇文章彻底搞懂海明码
  6. 联想s40-70进入bios方法。
  7. uni-app项目打包成apk(本地打包篇)
  8. 小武与YOLOv3----优图代码
  9. 运算放大器单电源设计
  10. jquery 绑定双击事件优化