我已经构建了一个java服务器,我想向其他客户端发送消息。这是我的客户端对等代码。该程序能够在屏幕上打印一个客户端发送给服务器的消息(但只有消息客户端发送)例如: 新用户:hi(这是服务器接收的内容以及文本客户端控制台显示的内容)
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ClientPeer extends Thread{
String username;
Socket socket;
public ClientPeer(String username,Socket socket)
{
this.username=username;
this.socket=socket;
}
@Override
public synchronized void run()
{
Scanner input=new Scanner(System.in);
String string=input.nextLine();
while(true)
{
if(!string.startsWith("/w") && !string.equals("exit"))
{
try {
sendMessage(string);
} catch (IOException ex) {
Logger.getLogger(ClientPeer.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(username+":"+string);
}
string=input.nextLine();
}
}
public void sendMessage(String message) throws IOException
{
ObjectOutputStream object=new ObjectOutputStream(socket.getOutputStream());
object.writeObject(new Message(message,username));
object.flush();
}
public void sendMessage(String message,String whoto) throws IOException
{
ObjectOutputStream object2=new ObjectOutputStream(socket.getOutputStream());
object2.writeObject(new PrivateMessage(username,message,whoto));
object2.flush();
}
}
答案 0 :(得分:0)
如果我理解正确,您希望将消息发送给连接到服务器的其他客户端。
为此,您的服务器必须保持跟踪与其连接的所有客户端套接字。一种方法可以是在服务器端保留客户端套接字列表,当服务器收到消息时,循环遍历列表并向每个客户端发送消息。
检查此链接使用相同的机制: https://stackoverflow.com/a/27911355/891092