首页 新闻 会员 周边

socket服务器向指定客户端发送消息

0
悬赏园豆:100 [已解决问题] 解决于 2020-05-13 10:58

我这个是监听send按钮向所有客户端发送消息,请问怎样才能向指定客户端发送呢
public void actionPerformed(ActionEvent e) {
String data = "";
if ("sendMsg".equals(e.getActionCommand())) {
if ((data = this.input.getText()) != null) {
this.appendMsg("服务器-->" + data);
Set<Integer> keset = this.clients.keySet();
java.util.Iterator<Integer> iter = keset.iterator();
while (iter.hasNext()) {
int key = iter.next();
Socket socket = clients.get(key);
try {
Writer writer = new OutputStreamWriter(
socket.getOutputStream());
writer.write(ByteUtils.hexStr2Str(data.replace(" ", "")));
logger.debug(data);
writer.flush();
} catch (SocketException e1) {

				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
			this.input.setText("");
		}
	}
}
阿飞滴滴滴的主页 阿飞滴滴滴 | 初学一级 | 园豆:13
提问于:2020-05-13 10:17
< >
分享
最佳答案
1

key等于你指定的客户端时发消息,其它不处理

收获园豆:100
什麼江湖 | 初学一级 |园豆:116 | 2020-05-13 10:29

大佬,可以直接给代码吗

阿飞滴滴滴 | 园豆:13 (初学一级) | 2020-05-13 10:32

@阿飞滴滴滴:
public void actionPerformed(ActionEvent e) {
String data = "";
if ("sendMsg".equals(e.getActionCommand())) {
if ((data = this.input.getText()) != null) {
this.appendMsg("服务器-->" + data);
Set<Integer> keset = this.clients.keySet();
java.util.Iterator<Integer> iter = keset.iterator();
while (iter.hasNext()) {
int key = iter.next();
if (key == 你指定的客户端){
Socket socket = clients.get(key);
try {
Writer writer = new OutputStreamWriter(
socket.getOutputStream());
writer.write(ByteUtils.hexStr2Str(data.replace(" ", "")));
logger.debug(data);
writer.flush();
}
break;
}
......

什麼江湖 | 园豆:116 (初学一级) | 2020-05-13 10:40

@什麼江湖: 谢谢大佬,这块一直搞不懂

阿飞滴滴滴 | 园豆:13 (初学一级) | 2020-05-13 10:58
其他回答(1)
0

客户端的key 设置跟能区分是哪个客户端就可以。

Tom.汤 | 园豆:3028 (老鸟四级) | 2020-05-13 10:54

谢谢大佬,上面已经解决了

支持(0) 反对(0) 阿飞滴滴滴 | 园豆:13 (初学一级) | 2020-05-13 11:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册