public class SocketEvent {
private int type =0;
private String msg ="";
private String keyIP =""; // 关键IP
private String temporaryIP =""; // 临时IP
public SocketEvent() {
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getKeyIP() {
return keyIP;
}
public void setKeyIP(String keyIP) {
this.keyIP = keyIP;
}
public String getTemporaryIP() {
return temporaryIP;
}
public void setTemporaryIP(String temporaryIP) {
this.temporaryIP = temporaryIP;
}
}
public static final int CHAT_PRIVATE = 111; // 私聊的指令 public static final int CHAT_GROUP = 222; // 群聊的指令 public static final int SOCKET_SUCCESS = 333; // socket连接成功的指令 public static final int SOCKET_FAIL = 444; // socket连接失败的指令 public static final int CONNECT_SUCCESS = 666; // socket连接成功的指令 public static final int CONNECT_FAIL = 777; // socket连接失败的指令 public static final int LOGIN_ARG = 888; // socket接收到标志新用户登录的指令 public static final int CANCEL_ARG = 999; // socket接收到标志用户注销的指令 public static final int NEW_CLIENT = 3332; // 新用户登录的指令 public static final int ALL_CLIENT = 3432; // 新用户登录后接收到所有在线用户的指令 public static final int SEND_PRIVATE = 5666; // 发送私聊消息的指令 public static final int SEND_IPlIST = 6666; // 发送已登录的用户IP集合的指令
Socket Socketclient = server.accept();
// 实时获取客户端发送的数据
@Override
public void run() {
try {
while (true) {
if ((acceptLine = in.readLine()) != null) {
System.out.println("<接收到的消息是>" + acceptLine);
SocketEvent event = JSON.parseObject(acceptLine, SocketEvent.class);
switch (event.getType()) {
case UtilFactory.CHAT_GROUP:
sendMsgAvoid(event.getKeyIP(), acceptLine);
break;
case UtilFactory.SEND_PRIVATE:
event.setType(UtilFactory.CHAT_PRIVATE);
sendMsgTarget(event.getTemporaryIP(), JSON.toJSONString(event));
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 向指定的ip地址发送消息
private void sendMsgTarget(String targetIP, String msg) {
int num = mList.size();
for (int index = 0; index < num; index++) {
Socket mSocket = mList.get(index);
String ip = mSocket.getInetAddress().getHostAddress();
if (ip.equals(targetIP)) {
PrintWriter pout = null;
try {
pout = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream(), "UTF-8")), true);
pout.println(msg);
// 退出方法
return;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 向除了这个ip以外的所有ip发送
private void sendMsgAvoid(String avoidIP, String msString) {
int num = mList.size();
for (int index = 0; index < num; index++) {
Socket mSocket = mList.get(index);
String ip = mSocket.getInetAddress().getHostAddress();
if (!ip.equals(avoidIP)) {
PrintWriter pout = null;
try {
pout = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream(), "UTF-8")), true);
pout.println(msString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void privateChat(SocketEvent event) {
switch (event.getType()) {
case MyApplication.CHAT_PRIVATE:
// 将消息post给私聊聊天室
ChatMessageBean bean = new ChatMessageBean();
bean.setMsg(event.getMsg());
bean.setName(event.getKeyIP());
bean.setType(ChatMessageBean.OTHERS_ARG);
EventBus.getDefault().post(bean);
break;
case MyApplication.SEND_PRIVATE:
sendMsg(JSON.toJSONString(event));
break;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有