我想向所有客户广播所有消息。我可以看到只有发送消息的用户才能看到他的消息。例如:newbie:hi - >只有我能看到这个,没有其他客户。
我试过了:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ServerPeer extends Thread{
Socket socket;
public ServerPeer(Socket socket)
{
this.socket=socket;
}
public void run()
{
while(socket.isConnected())
{
{
for(ServerPeer sp:Server._noclients)
try {
ObjectInputStream objin=new ObjectInputStream(socket.getInputStream());
Message classmessage=(Message)objin.readObject();
System.out.println(classmessage.getAll());
objin=new ObjectInputStream(socket.getInputStream());
} catch (IOException ex) {
Logger.getLogger(ServerPeer.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ServerPeer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
ClientPeer类:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.ArrayList;
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 void run()
{
Scanner input=new Scanner(System.in);
String string=input.nextLine();
while(true)
{
if(!string.startsWith("/w") && !string.equals("exit") && !string.equals(null))
{
try {
sendMessage(string);
// arraymessages.add(username+":"+string);
// for(int i=0;i<Server._noclients.size();i++)
// System.out.println(username+" "+string);
} catch (IOException ex) {
Logger.getLogger(ClientPeer.class.getName()).log(Level.SEVERE, null, ex);
}
// try {
// for(int i=0;i<Server._noclients.size();i++)
// sendMessage(string);
// } catch (IOException ex) {
// Logger.getLogger(ClientPeer.class.getName()).log(Level.SEVERE, null, ex);
// }
// for(String s:arraymessages)
// System.out.println(s);
System.out.println(username+":"+string);
}
// else if(string.startsWith("/w"))
// {
// String []vect=string.split(" ");
// Scanner newin=new Scanner(System.in);
// System.out.println("write");
// String newmess=newin.nextLine();
// for(String p:users)
// if(p.equals(vect[1]))
// try {
// sendMessage(newmess,p);
//}// catch (IOException ex) {
// Logger.getLogger(ClientPeer.class.getName()).log(Level.SEVERE, null, ex);
// }
// }
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();
}
}