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

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

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

我用的是:
PrintStream out = new PrintStream(client.getOutputStream());
​out.println(“成功接收”);
如何做到客户端能区分服务器发来是的是成功接收指令还是客户端数量,而不是把他们都当成成功接收指令来对待?
...全文
293 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

62,614

社区成员

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

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