Witam - mam problem z sockietami. Robię prosty chat w cmd, lecz mam problem. Wysyłam poprawnie do serwera dane i je odbieram, po czym zwracam do klienta, lecz serwer nie rozsyła to innych klientów tej wiadomości, tylko do tego clienta który go napisał ;/. Jestem w socketach początkujący, zaczynam z nimi zabawę. Oto kod :
Serwer:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static final int port = 9999;
public static void main(String[] args) throws IOException
{
new Server().run();
}
public void run() throws IOException
{
ServerSocket Serversocket = new ServerSocket(port);
System.out.println("Serwer nasluchuje portu :"+port);
while(true)
{
Socket socket = Serversocket.accept();
new ServerThread(socket).start();
}
}
}
Serwer Thread:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread extends Thread{
Socket socket;
ServerThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try
{
BufferedReader bufferedRender = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),true);
String message = null;
System.out.println("User ->"+bufferedRender.readLine()+" polaczyl sie !");
while((message = bufferedRender.readLine()) !=null)
{
System.out.println("IN > "+message);
printWriter.println("From Client:"+message);
}
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Client:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException
{
String name = args[0];
Socket socket = new Socket("localhost",9999);
BufferedReader bufferedReaderFromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),true);
printWriter.println(name);
BufferedReader bufferedReaderFromCommandPrompt = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String readerInput = bufferedReaderFromCommandPrompt.readLine();
printWriter.println(name+":"+readerInput);
System.out.println(bufferedReaderFromClient.readLine());
}
}
}