Java 如何向其他客户端发送消息?
我有一个关于java套接字的问题。我的代码向所有客户端发送消息,包括发送。我想让他只为其他客户发送我怎么能这样做?我在终端中使用telnet 127.0.0.1 2015命令进行测试 客户Java 如何向其他客户端发送消息?,java,sockets,Java,Sockets,我有一个关于java套接字的问题。我的代码向所有客户端发送消息,包括发送。我想让他只为其他客户发送我怎么能这样做?我在终端中使用telnet 127.0.0.1 2015命令进行测试 客户 package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.S
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Clientes implements Runnable {
public Socket cliente;
public Clientes(Socket cliente) {
this.cliente = cliente;
}
public void run() {
try {
PrintWriter out = new PrintWriter(cliente.getOutputStream(), true);
out.write("---Seja Bem Vindo---\n");
out.flush();
System.out.println("Nova conexao: "
+ this.cliente.getInetAddress().getHostAddress());
while (true) {
BufferedReader in = new BufferedReader(new InputStreamReader(
cliente.getInputStream()));
String veioDoCliente = in.readLine();
if(veioDoCliente.equalsIgnoreCase("SAIR")){
cliente.close();
break;
}
System.out.println("MSG vinda do cliente " + veioDoCliente);
for (Clientes writer : Servidor.clientes) {
PrintWriter out2 = new PrintWriter(writer.cliente.getOutputStream(), true);
out2.write("teste:"+veioDoCliente+"\n");
out2.flush();
}
//s.close();
//this.cliente.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器
package socket;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Servidor {
public Socket cliente;
public Servidor(Socket cliente) {
this.cliente = cliente;
}
public static List<Clientes> clientes = new ArrayList<Clientes>();
public static void main(String[] args) throws IOException {
ServerSocket servidor = new ServerSocket(2015);
System.out.println("Esperando alguem se conectar...");
while (true) {
Socket cliente = servidor.accept();
Clientes tratamento = new Clientes(cliente);
clientes.add(tratamento);
Thread t = new Thread(tratamento);
t.start();
}
}
}
我看不到你的服务器在哪里处理输入的代码,所以我在黑暗中拍摄 基本上,当您的数据进入时,您会看到它来自哪个客户机,然后在循环中检查该客户机是否与当前客户机匹配。如果不匹配,则发送数据 如果没有其他方法,您将需要为每个客户机提供ID,它将使用ID字符串发送数据,但我相信您可以使用套接字跟踪您的客户机