Хочу написать простой чат на Java сокетах без многопоточности. 1. Не очень понимаю как происходит соединение сокетом с другим компьютером, если передачей сокету ip, то как делать соединение по умолчанию при динамическом ip. 2. Какие классы ввода вывода использовать.
Ответ
Нужен клиент и сервер, клиенты подключаются к серверу, а он транслирует полученные сообщения всем подключенным клиентам.
серверная часть:
public class Server {
static ServerSocket socket;
public static List
public static void main(String[] args) throws IOException {
socket = new ServerSocket(2000);
while (true) {
ConnectedClient client = new ConnectedClient(socket.accept());
clients.add(client);
client.start();
}
}
}
public class ConnectedClient extends Thread {
private Socket sock;
private BufferedReader input;
private PrintWriter output;
public ConnectedClient(Socket s) throws IOException {
sock = s;
System.out.println("new user connected from " + s.getInetAddress().toString());
input = new BufferedReader(new InputStreamReader(sock.getInputStream()));
output = new PrintWriter(sock.getOutputStream());
}
@Override
public void run() {
try {
while (sock.isConnected()) {
String readed = input.readLine();
for (CinnectedClient c : server.clients) {
c.send(readed);
}
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
System.out.println("user disconnected from " + sock.getInetAddress().toString());
}
}
public void send(String s) throws IOException {
output.println(s);
output.flush();
}
}
клиентская часть:
сокет для подключения к серверу:
Socket s = new Socket(
Комментариев нет:
Отправить комментарий