请问Socket服务器如何向客户端发送多种数据?

asdfsfasdf112 2013-10-17 05:25:49
是这样的,我做一个模仿QQ的东西,一开始服务器启动,客户端连接,服务器建立新线程与客户端交流。
客户端向服务器发送信息,客户端接收信息后回馈一条成功接收的指令。

问题来了,我想要服务器不仅能发送成功接收的指令给客户端,还要发送其他数据,例如目前多少人在线,怎样做到把这两种数据分开发送给客户端?

我用的是:
PrintStream out = new PrintStream(client.getOutputStream());
​out.println(“成功接收”);
如何做到客户端能区分服务器发来是的是成功接收指令还是客户端数量,而不是把他们都当成成功接收指令来对待?
...全文
348 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbo624 2013-10-18
  • 打赏
  • 举报
回复
传对象 对象可以是map对象 就可以了
无聊找乐 2013-10-18
  • 打赏
  • 举报
回复
引用 4 楼 u010250805 的回复:
[quote=引用 2 楼 rainbowsix 的回复:] 最简单的 你用json格式发送数据, 数据内容可以任意定义,客户端解析就好了
Json适合我的JAVASE吗?[/quote] 当然了,现在有很多可以解析jason的包, 用的比较多的是jackson
傲世孤尘 2013-10-17
  • 打赏
  • 举报
回复
呵呵,这个很容易啊。 我以前写的聊天发消息是这么处理的,先定义一个消息类接口: import java.io.Serializable; //消息类型接口 public interface Message extends Serializable{ public static final int SYSTEM_NOTICE=0;//系统公告消息 public static final int SYSTEM_CLOSE=1;//系统关闭消息 public static final int CHAT_MESSAGE=2;//普通聊天信息 public static final int USER_LOGIN_MESSAGE=3;//用户上线消息 public static final int USER_EXIT_MESSAGE=4;//用户下线消息 public int getMessageType();//获取消息类型 } 然后分别定义了几个实现类: package com.yangwen.object.message; //聊天消息 public class ChatMessage implements Message{ private int index=0;//消息源 private int toIndex=0;//消息目的地 private String content=null;//消息内容 public ChatMessage(int index, int toIndex, String content) { this.index = index; this.toIndex = toIndex; this.content = content; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public int getToIndex() { return toIndex; } public void setToIndex(int toIndex) { this.toIndex = toIndex; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getMessageType() { return Message.CHAT_MESSAGE; } } package com.yangwen.object.message; //系统公告消息 public class SystemNoticeMessage implements Message{ private String content=null;//公告内容 public SystemNoticeMessage(String content) { this.content = content; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getMessageType() { return Message.SYSTEM_NOTICE; } } 这里列举了两个,其他的不赘述了,发送数据时用writeObject() 接受数据时用readObject,先用Message类型接受(多态性),然后根据getType()得到的值,进行向下类型转换即可
asdfsfasdf112 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 rainbowsix 的回复:
最简单的 你用json格式发送数据, 数据内容可以任意定义,客户端解析就好了
Json适合我的JAVASE吗?
asdfsfasdf112 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
这是逻辑上的问题。看下这个帖子里的源码,很简单。里面有一个功能就是服务器给所有客户端发送消息,如xxx上线, http://bbs.csdn.net/topics/390612738
表示很久前看过你的代码,我出乎的发现你的服务器跟客户端跟我写的几乎一样, 看其他的没看,挺长的,能给我大概介绍下思路好么
无聊找乐 2013-10-17
  • 打赏
  • 举报
回复
最简单的 你用json格式发送数据, 数据内容可以任意定义,客户端解析就好了
teemai 2013-10-17
  • 打赏
  • 举报
回复
这是逻辑上的问题。看下这个帖子里的源码,很简单。里面有一个功能就是服务器给所有客户端发送消息,如xxx上线, http://bbs.csdn.net/topics/390612738
代码下载链接: https://pan.quark.cn/s/a8fbca3925b4 《鸿蒙OS开发环境构建》指南系统性地阐述了配置和筹备鸿蒙OS开发所需的各种工具和条件的具体方法。鸿蒙OS,亦称HarmonyOS,是由华为研发的一款面向全场景的分布式操作系统,其目标是提供跨平台、多设备间无缝协作的使用体验。本指南涉及了从Linux服务器到Windows工作站的完整开发流程。指南中提及了MobaXterm,这是一款用于连接Linux源码服务器的软件,使得开发人员能够在Windows环境中远程访问Linux服务器。同时,HiTool作为烧录工具,用于将编译后的系统镜像写入开发板。IPOP.EXE则是一款串口终端软件,用于执行串行通信和调试任务。Embedded Studio用于开发设备驱动程序,而DevEco Studio是华为提供的图形化应用程序开发平台,支持C/C++语言,拥有代码编辑、编译、烧录和调试功能,被视为OpenHarmony智能设备开发者的首选集成开发环境。在硬件配置方面,指南列出了必需的设备,包括Linux服务器(推荐Ubuntu 16.04及以上版本),Windows工作台(兼容XP/7/10),以及Hi3518EV300 IoT Camera单板。开发期间,Windows工作台通过USB线与单板相连接,以实现数据传输。此外,为了开展开发工作,还需要安装putty、IPOP、tftp服务器等辅助软件,以及HiTool用于烧录操作。在软件系统要求方面,Linux服务器需要安装bash、Python3.7+、gn、ninja、LLVM等构建工具,这些工具对于生成和执行编译脚本具有关键作用。在Windows工作台上,建议采用Visual Studi...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧