Класс Сервера:
public class Server {
public static final int PORT = 8008;
private ServerSocket serverSocket;
private Socket socket;
public static ArrayList<Connection> clients = new ArrayList<>();
public Server() throws IOException {
serverSocket = new ServerSocket(PORT);
}
public void listen() throws IOException {
while (true) {
socket = serverSocket.accept();
System.out.println("Someone connected");
clients.add(new Connection(socket));
}
}
}
Класс, в котором общается клиент с сервером (серверный класс):
public class Connection extends Thread {
private Socket socket;
private BufferedWriter bw;
private BufferedReader br;
public Connection(Socket socket) throws IOException {
this.socket = socket;
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
start();
}
@Override
public void run() {
String message;
while (true) {
try {
message = br.readLine();
System.out.println(message);
for (Connection connection : Server.clients) {
connection.send(message);
}
} catch (IOException e) {
leave();
}
}
}
public void send(String message) throws IOException {
bw.write(message + "\n");
bw.flush();
}
public void leave() {
try {
socket.close();
br.close();
bw.close();
Server.clients.remove(this);
} catch (IOException ignored) {}
}
}
public Client(String ip, int port, String nick) throws IOException {
this.nick = nick;
this.socket = new Socket(ip, port);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
new MessageReader().start();
new MessageWriter().start();
}
private class MessageReader extends Thread {
@Override
public void run() {
String message;
while (true) {
try {
message = br.readLine();
System.out.println(message);
} catch (IOException ignored) {}
}
}
}
private class MessageWriter extends Thread {
@Override
public void run() {
String message;
while (true) {
try {
message = console.readLine();
bw.write("[" + timeFormat.format(time) + "]" + nick + ": " + message + "\n");
bw.flush();
} catch (IOException ignored) {}
}
}
}
Main класс:
public class Main {
public static void main(String[] args) throws IOException {
if (args.length == 1) {
new Server().listen();
}
else if (args.length == 4) {
// - i ip -n nick
new Client(args[args.length - 3], 8008, args[args.length - 1]);
}
}
}
Работает только в локальной сети. Пробовал отключать брандмауэр - безрезультатно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
я новичок в Android StudioЯ делаю приложение заметочник, используя RecycleView и для сохранения заметок SQLite
Всем доброго дняСильно не пинайте, ибо не знаю, что ещё нужно выложить, чтобы решить проблему
Я хочу сделать возможность записи файлов на съёмный носительДело в том, что при попытки записи на него показывает ошибку open failed: EACCES (Permission...