如何将所有消息发送到客户端(java 服务器)
How to send all the message to the client(java server)
我建立了一个 java 服务器,我想向其他客户端发送消息。这是我的客户端 code.The 程序能够将一个客户端发送到的消息打印到屏幕上服务器(但只有客户端发送的消息)例如:
new user: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();
}
}
如果我没理解错的话,您想将消息发送给连接到服务器的其余客户端。
为此,您的服务器必须跟踪所有与其连接的客户端套接字。一种方法是在服务器端保留一个客户端套接字列表,当服务器收到消息时,遍历该列表并将消息发送给每个客户端。
检查此 link,它使用相同的机制:
我建立了一个 java 服务器,我想向其他客户端发送消息。这是我的客户端 code.The 程序能够将一个客户端发送到的消息打印到屏幕上服务器(但只有客户端发送的消息)例如: new user: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();
}
}
如果我没理解错的话,您想将消息发送给连接到服务器的其余客户端。
为此,您的服务器必须跟踪所有与其连接的客户端套接字。一种方法是在服务器端保留一个客户端套接字列表,当服务器收到消息时,遍历该列表并将消息发送给每个客户端。
检查此 link,它使用相同的机制: