내 클라이언트가 연결할 수있는 채팅 서버를 만들었지 만 클라이언트가 다른 사람이 보낸 메시지를받지 못합니다. 이것은 모든 것을 수행하는 코드입니다. 출력 스트림을 보내고 받고 설정하기.소켓의 arraylist에있는 데이터를 보내는 중
public void run()
{
while(true)
{
for(int i = 0; i < ClientConnector.Connections.size(); i++)
{
try
{
if(Socket != null)
{
ObjectOutputStream Output = new ObjectOutputStream(Socket.getOutputStream());
ObjectInputStream Input = new ObjectInputStream(Socket.getInputStream());
whileChatting(Input, Output);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public static void sendMessage(String message, String returnedMessage, ObjectOutputStream out)
{
try
{
System.out.println("[Server] " + message);
if(!message.isEmpty())
{
out.writeObject("\247c[Server]\247d " + message);
out.flush();
System.out.println("[Chat] Sent: " + message);
}
else
{
out.writeObject(returnedMessage);
System.out.println("[Chat] Sent: " + returnedMessage);
}
out.flush();
System.out.println("[Info] Flushing remaining data to stream.");
}
catch(IOException ioException)
{
System.out.println("[Warning] Error: ioException @ sendMessage line 76.");
}
}
public static void whileChatting(ObjectInputStream input, ObjectOutputStream output) throws IOException
{
String message = "";
do
{
try
{
message = (String) input.readObject();
System.out.println(message);
sendMessage("", message, output);
}
catch(ClassNotFoundException classNotFoundException)
{
System.out.println("[Warning] Error: ClassNotFoundException @ whileChatting line 1-7.");
System.out.println("idk wtf that user sent!");
}
}while(!message.equals("/stop"));
}
궁금합니다. 어떻게하면 한 사람이 모든 고객에게 보내는 것을 보낼 수 있습니까? 배열 목록에 소켓 목록을 보관합니다. 그렇게 보입니다.
public static ArrayList<Socket> Connections = new ArrayList<Socket>();
각 클라이언트가 연결되면 소켓에이 목록이 저장됩니다. 이 작업을 수행하는 더 좋은 방법이 있다면 알려주십시오.