文档章节

基于TCP SOCKET实现的远程聊天系统

T
 TTHFcd66
发布于 2019/08/14 17:17
字数 511
阅读 7
收藏 0

一、实验目的

本次实验需要完成一个实时聊天系统。该系统由聊天客户端和聊天服务器组成。客户端即可以给指定客户端发送信息,也可以把消息广播给所有客户端。通过这个实验,使得学生掌握socket API编程。

二、实验内容

该章节将会详细的列出服务器和客户端的功能要求。

2.1 服务器的功能

服务器能够并行处理客户端发送过来的消息或者命令

服务器把从新连接的客户端中收到的第一条消息作为该客户端的用户名称

服务器能够处理从客户端发送过来的两种类型的信息:

广播信息,服务器收到信息后将其广播给其他客户端

点对点信息,服务器将消息转发给指定客户端

服务器需要把某个客户端发送的广播聊天信息,广播给和该客户端在同一个频道的所有客户端(但是不包括该用户端自己)这个广播消息的格式应为[<name>]:<message>。其中<name>为发送聊天信息的客户端名称,<message>为该客户端发送的消息

当某个客户端离线时,服务器需要广播一个离线消息给所有的客户端

容错处理。当客户端发送的数据和规定的格式不一致时,服务器能够处理这个错误并且返回错误信息

2.2 客户端的功能

从服务器返回的消息需要显示在控制台下,并且需要去除末尾多余的空格

为了区别于其他人发送的消息,客户端自己发送的消息,需要在控制台中以“[me]:”显示

三、操作环境

操作系统:Mac OS

编写语言:Java

编译软件:Eclipse

点击下载源码

© 著作权归作者所有

T
粉丝 0
博文 647
码字总数 283039
作品 0
沈阳
私信 提问
加载中

评论(0)

基于 JavaFX 开发的聊天客户端 - OIM

一、简介 OIM是一套即时通讯的聊天系统,在这里献给大家,一方面希望能够帮助对即时通讯有兴趣研究的朋友,希望我们能够共同进步,另一个就是希望能够帮助到需要即时通讯系统的朋友或者企业,...

烙灵
2017/06/09
2.8W
47
Qt Qthread~

请问 我建立了一个MAINWINDOW类~用于连接现在服务器,,,, 但是我想实现一个自动发送的功能~ 但是一自动发送我就界面就卡了~ 所以我又新建了一个mythread类~类里也定义了QTCPsock指针,但是没赋...

掘金者
2011/07/28
845
2
基于Qt轻量级HTTP服务器--JQHttpServer

JQHttpServer 是一个基于Qt开发的轻量级HTTP服务器 。目前支持GET和POST两个协议。底层有TcpSocket和LocalSocket两个版本,方便使用。 用到的Qt库有: core network concurrent testlib(测试...

朽叶
2016/07/05
1.8K
0
Socket封装之聊天程序(二)

  今天,学习一下socket的封装。 类图   首先,我们把需要封装的各个类初步的设计如下:   接下来,我们建立类与类之间的关系:   其中,CStream类可有可无,这个类是用来封装各种读...

SherryX
2018/06/26
0
0
使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)

如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微软收购并被大力推...

CSharpKit
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis学习笔记——数据类型之有序集合类型

介绍 在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数。 集合中每个元素都是不同的,分数可以相同。 有序集合和列表的异同 相同点 二者都是有序的。 二者都可以获得某一个...

PS板砖
13分钟前
23
0
比较两个MySQL数据库[关闭]

我目前正在使用MySQL数据库开发应用程序。 数据库结构仍在不断变化中,并且随着开发的进展而变化(我更改了本地副本,仅将其保留在测试服务器上)。 有没有一种方法可以比较数据库的两个实例...

javail
25分钟前
28
0
Joomla搜索生态系统介绍

您在网站上花费多长时间?对我来说,它永远不会超过2分钟。研究表明,您从Baidu搜索获得的自然访问者平均每个网站花费53秒。而您的直接访客通常花费1分钟50秒。当然,它可能会根据您的受欢迎...

六艺网络专注于Joomla
28分钟前
35
0
linux基础第五周

1、查找/etc目录下大于1M且类型为普通文件的所有文件 find /etc -size +1M -type f 2、打包/etc目录下所有conf结尾的文件,压缩包名称为当天时间,并拷贝到/usr/local/src目录备份 tar Jcvf...

大雨雨雨雨雨
35分钟前
29
0
在C#中使用Finalize / Dispose方法

C#2008 我已经为此工作了一段时间,但我仍然对在代码中使用finalize和dispose方法感到困惑。 我的问题如下: 我知道在处理非托管资源时我们只需要一个终结器即可。 但是,如果存在调用非托管...

技术盛宴
41分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部