2 u011505805 u011505805 于 2016.04.02 09:46 提问

java TCP聊天室设计疑问

近期要以tcp聊天室项目为结课作业,在写代码时遇到一些疑问:
1、服务端如何监控用户上下线?
2、用户如何对用户进行私聊?
3、服务端整理在线列表后除了组合成字符串发给客户端(解析)显示在客户端在线列表中还有什么其他方法可以实现?
请老师们给予帮助,谢谢!

1个回答

caozhy
caozhy   Ds   Rxr 2016.04.02 10:58
已采纳

(1)用户登录主动通知服务器上线,用户注销主动通知服务器下线。服务器客户端定时通讯,服务器轮询检查客户端最后登录时间,在用户意外退出的时候服务器主动让客户端下线。
(2)私聊无非就是发送的信息只有对方看到而已。和非私聊没有区别,只要对发送消息类型和发送者接收者判断下。
(3)xml json等标准数据格式比较好,客户端反序列化,有对应的库,不用写代码。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
基于TCP/IP协议聊天室的课程设计报告(内附有java源码,还有截图,和详细的分析过程)
基于TCP/IP协议聊天室的课程设计报告(内附有java源码,还有截图,和详细的分析过程)是设计出优秀毕业论文不可多得的参考资料!同时也是计算机网络实训课程设计优秀的参考资料
基于TCP协议的网络聊天室
这是个利用MFC对话框编程,实现了网络聊天,类似于QQ,使用的是TCP协议,利用了C++类的思想,并且是多线程编程,对于学习MFC、网络编程、多线程编程都有很大的参考价值
JAVA 基于TCP协议编写的Socket聊天室程序
使用Socket套接字进行编程,完成的是基于TCP可靠服务实现服务器与客户端的双通信。 package com.han; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; i
基于TCP协议编程的网络聊天室
设计内容:基于TCP协议编程的方式,编写程序模拟网络聊天室的运行过程。 设计要求: 1. 采用C/S模式,基于TCP协议编程的方式,使得各个用户通过服务器转发实现聊天的功能。 2. 分为两大模块:客户端模块和服务器端模块。 3. 客户端模块的主要功能: 1)登陆功能:用户可以注册,然后选择服务器登入聊天室。 2)显示用户:将在线用户显示在列表中。 3)接收信息:能接收其他用户发出的信息。 4)发送信息:能发出用户要发出的信息。 4.服务器端模块的主要功能: 1)检验登陆信息:检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。就允许用户登陆。 2)显示在线状态:将该用户的状态发给各在线用户。 3)转发聊天信息:将消息转发给所有在线的用户。 来源GitHub:wangzhe0828/ChatRoom,对代码加入了详细的注释。
基于LinuxTcp聊天室的设计与实现
Linux+Tcp+聊天室+代码+文档
基于linux的TCP网络聊天室设计与实现
利用Linux实现基于TCP模式的网络聊天程序 主要完成的两大组成部分为:服务器和客户端。 服务器程序主要负责监听客户端发来的消息。 客户端需要登录到服务器端才可以实现正常的聊天功能。该程序是利用进程以及共享内存来实现群发送消息的。 以下简单分析一下服务器端和客户端两个方面所要完成的任务。 服务器的主要功能如下:在特定的端口上进行监听,等待客户端的连接。 用户可以配置服务器端的监听端口。 向连
Java 基于Tcp/ip连接的多人交互聊天室(Socket编程)
项目说明: 本项目由三个.java文件(Client.java、Server.java、UI.java)和一个.jpg图片文件组成UI.java是负责界面的构成文件。本聊天室的界面极其简单。主要分为两个界面:第一个是启动时需要登陆的界面如下: 输入名字进去以后就可以直接聊天 这个聊天室相当于群聊,每一个登陆进去的人发的信息,其他人都会收到。 使用指南:1.运行Server.java文
JAVA网络聊天室的设计与实现
JAVA网络聊天室的设计与实现 (2年前写的了!) 1. 问题描述 JAVA聊天室是用java程序实现的,由客户端和服务器端组成。先启动服务器端,再启动客户端,服务器验证身份后客户便可登陆聊天室。  对于客户来说:注册、登陆和退出聊天室时都有相关提示信息;用户应该可以看到所有在线的用户;聊天时可以群聊,也可以选择某个聊天对象私聊。   对于服务器来说
Java Socket实现的一个简易聊天室
Java Socket实现的一个简易聊天室 大体思路:用一个ServerSocket来接收所有Client的消息,然后转发给其他Client。在Server端,每个Client对应一个ServerHandleThread线程。在Client端,开一个线程来接收Server端的消息,main线程来接收键盘的输入。具体细节见代码。 Server端代码
基于TCP的网络聊天室的设计(一步一步教你CSocket网络编程)
里面包含聊天室的客户端和服务器端的源文件和一份完整的设计报告。 一、 系统概要 本系统能实现基于VC++的网络聊天室系统。有单独的客户端、服务器端。 服务器应用程序能够接受来自客户端的广播,然后向客户端发送本机的IP与服务端口,让客户端接入到服务器进行聊天,检测用户名是否合法(重复),服务器责接收来自客户端的聊天信息,并根据用户的需求发送给指定的人或所有人,能够给出上线下线提示。客户端能够发出连接请求,能编辑发送信息,可以指定发给单人或所有人,能显示聊天人数,上线下线用户等。 二、 通信规范的制定 服务请求规范: 服务器端: (1) 创建一个UDP的套接字,接受来自客户端的广播请求,当请求报文内容为“REQUEST FOR IP ADDRESS AND SERVERPORT”时,接受请求,给客户端发送本服务器TCP聊天室的端口号。 (2) 创建一个主要的TCP协议的套接字负责客户端TCP连接 ,处理它的连接请求事件。 (3)在主要的TCP连接协议的套接字里面再创建TCP套接字保存到动态数组里,在主要的套接字接受请求后 ,就用这些套接字和客户端发送和接受数据。 客户端: (1) 当用户按“连接”按钮时,创建UDP协议套接字,给本地计算机发广播,广播内容为“REQUEST FOR IP ADDRESS AND SERVERPORT”。 (2)当收到服务器端的回应,收到服务器发来的端口号后,关闭UDP连接。根据服务器的IP地址和端口号重新创建TCP连接。 故我思考:客户端一定要知道服务器的一个端口,我假设它知道服务器UDP服务的端口,通过发广播给服务器的UDP服务套接字,然后等待该套接字发回服务器TCP聊天室服务的端口号,IP地址用ReceiveForom也苛刻得到。 通信规范 通信规范的制定主要跟老师给出的差不多,并做了一小点增加: (增加验证用户名是否与聊天室已有用户重复,在服务器给客户端的消息中,增加标志0) ① TCP/IP数据通信 --- “聊天”消息传输格式 客户机 - 服务器 (1)传输“用户名” STX+1+用户名+ETX (2) 悄悄话 STX+2+用户名+”,”+内容+ETX (3) 对所有人说 STX+3+内容+ETX 服务器- 客户机 (0)请求用户名与在线用户名重复 //改进 STX+0+用户名+EXT (1)首次传输在线用户名 STX+1+用户名+ETX (2)传输新到用户名 STX+2+用户名+ETX (3)传输离线用户名 STX+3+用户名+ETX (4)传输聊天数据 STX+4+内容+ETX (注:STX为CHR(2),ETX 为CHR(3)) 三、 主要模块的设计分析 四、 系统运行效果 (要求有屏幕截图) 五、 心得与体会