• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Прочее Уведомления с сервера expensive/evaware ready/other tutorial

  • Автор темы Автор темы Fanuzei
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Авг 2021
Сообщения
161
Реакции
0
Выберите загрузчик игры
  1. Vanilla
Короче смысл в чем, вы берёте любой фри хостинг грузите туда сокет сервер,и вы с сервера можете писать любое сообщение и оно придёт на все клиенты которые играют тоесть всем кто подключен к серверу также на сервере есть зачатки ирц чата но я его не сделал не обращайте внимания
Пожалуйста, авторизуйтесь для просмотра ссылки.

Туториал (для евы и экспы но по сути работать должно на всех базах):
1. открываем мэин класс софта
2. ищём метод ClientLoad или что-то такое ну в общем где загружаются модули
3. вставляем строчку: connectToSocketServer("тут ваш айпи", тут порт ( от хоста где сервер ) );
1745250595837.png


4. вставляем метод после конца метода ClientLoad ( необязательно именно после )

connectToSocketServer:


Код:
Expand Collapse Copy
    private void connectToSocketServer(String host, int port) {
        socketExecutor = Executors.newSingleThreadExecutor();
        socketExecutor.execute(() -> {
            try {
                socket = new Socket(host, port);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);

                System.out.println("Connected to socket server at " + host + ":" + port);

                String message;
                while ((message = in.readLine()) != null) {
                    System.out.println("[Server Message] " + message);
                    notifyManager.register("[Server] message:   " + message, NotifyType.WARN, 5000);
                    if (Minecraft.getInstance().player != null) {
                        Minecraft.getInstance().player.sendMessage(
                                new StringTextComponent("§c[Server]§f " + message),
                                Minecraft.getInstance().player.getUniqueID()
                        );
                    }
                }
            } catch (IOException e) {
                System.out.println("Connection to socket server failed: " + e.getMessage());
            }
        });
    }

5. вообще сервер надо было сначала но ладно -
code socket server:

Socket server:
Код:
Expand Collapse Copy
package dev.m1le;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;

public class Main {
private static final int PORT = ваш порт от хоста;
private static List<ClientHandler> clients = Collections.synchronizedList(new ArrayList<>());
private static ServerSocket server;
private static boolean running = true;

public static void main(String[] args) {
startServer();
}

public static void startServer() {
try {
server = new ServerSocket(PORT);
System.out.println("§aIRC сервер запущен на порту " + PORT);
System.out.println("§fДоступные команды:");
System.out.println("§b/send <сообщение> §f- отправить сообщение всем");
System.out.println("§b/list §f- показать подключенных клиентов");
System.out.println("§b/stop §f- остановить сервер");

new Thread(() -> {
while (!server.isClosed()) {
try {
Socket socket = server.accept();
ClientHandler clientHandler = new ClientHandler(socket);
clients.add(clientHandler);
clientHandler.start();
System.out.println("§eНовое подключение: " + socket.getInetAddress());
} catch (IOException e) {
if (!server.isClosed()) {
System.out.println("§cОшибка подключения: " + e.getMessage());
}
}
}
}).start();

new Thread(() -> {
try (Scanner scanner = new Scanner(System.in)) {
while (running) {
String input = scanner.nextLine().trim();

if (input.equalsIgnoreCase("/stop")) {
stopServer();
break;
} else if (input.startsWith("/send ")) {
String message = input.substring(6);
broadcast("§d[Сервер]§f " + message);
System.out.println("§aСообщение отправлено всем клиентам");
} else if (input.equalsIgnoreCase("/list")) {
listClients();
} else {
System.out.println("§cНеизвестная команда");
}
}
}
}).start();

} catch (IOException e) {
System.out.println("§cНе удалось запустить сервер: " + e.getMessage());
}
}

public static void listClients() {
System.out.println("§6Подключенные клиенты (" + clients.size() + "):");
for (ClientHandler client : clients) {
System.out.println("- " + client.getClientInfo());
}
}

public static void stopServer() {
running = false;
try {
broadcast("§cСервер отключается...");

for (ClientHandler client : new ArrayList<>(clients)) {
client.close();
}

if (server != null) {
server.close();
}

System.out.println("§cСервер остановлен");
} catch (IOException e) {
System.out.println("§cОшибка при остановке сервера: " + e.getMessage());
}
}

public static void broadcast(String message) {
synchronized(clients) {
for (ClientHandler client : new ArrayList<>(clients)) {
client.sendMessage(message);
}
}
}

private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String nickname;

public ClientHandler(Socket socket) {
this.socket = socket;
this.nickname = "Гость_" + (int)(Math.random() * 1000);
}

public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);

sendMessage("§aДобро пожаловать на IRC сервер!");
sendMessage("§fИспользуйте /nick <имя> чтобы сменить ник");
broadcast("§e" + nickname + " §fподключился к чату");

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.startsWith("/nick ")) {
String newNick = inputLine.substring(6).trim();
if (!newNick.isEmpty()) {
broadcast("§e" + nickname + " §fсменил ник на §e" + newNick);
nickname = newNick;
sendMessage("§aТеперь ваш ник: " + nickname);
}
} else {
System.out.println("[" + nickname + "] " + inputLine);
broadcast("§b" + nickname + ":§f " + inputLine);
}
}
} catch (IOException e) {
System.out.println("§cКлиент отключился: " + nickname);
} finally {
close();
}
}

public void sendMessage(String message) {
out.println(message);
}

public String getClientInfo() {
return nickname + " (" + socket.getInetAddress() + ")";
}

public void close() {
try {
if (in != null) in.close();
if (out != null) out.close();
if (socket != null) socket.close();
clients.remove(this);
broadcast("§c" + nickname + " §fпокинул чат");
} catch (IOException e) {
System.out.println("§cОшибка при отключении клиента: " + e.getMessage());
}
}
}
}
6. загружаете сервер на любой хостинг бесплатный, платный,неважно хоть с локалки хостите и запускаете, порт пишете в коде от вашего хоста
1745250994482.png


7. Запускаете сервер затем клиент, на сервере пишете send (сообщение) в панельке и на клиент приходит сообщение)
upd.
В мэйн классе чита :
Код:
Expand Collapse Copy
 private ExecutorService socketExecutor;
 
Последнее редактирование:
Короче смысл в чем, вы берёте любой фри хостинг грузите туда сокет сервер,и вы с сервера можете писать любое сообщение и оно придёт на все клиенты которые играют тоесть всем кто подключен к серверу также на сервере есть зачатки ирц чата но я его не сделал не обращайте внимания
Пожалуйста, авторизуйтесь для просмотра ссылки.

Туториал (для евы и экспы но по сути работать должно на всех базах):
1. открываем мэин класс софта
2. ищём метод ClientLoad или что-то такое ну в общем где загружаются модули
3. вставляем строчку: connectToSocketServer("тут ваш айпи", тут порт ( от хоста где сервер ) );
1745250595837.png


4. вставляем метод после конца метода ClientLoad ( необязательно именно после )

connectToSocketServer:


Код:
Expand Collapse Copy
    private void connectToSocketServer(String host, int port) {
        socketExecutor = Executors.newSingleThreadExecutor();
        socketExecutor.execute(() -> {
            try {
                socket = new Socket(host, port);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);

                System.out.println("Connected to socket server at " + host + ":" + port);

                String message;
                while ((message = in.readLine()) != null) {
                    System.out.println("[Server Message] " + message);
                    notifyManager.register("[Server] message:   " + message, NotifyType.WARN, 5000);
                    if (Minecraft.getInstance().player != null) {
                        Minecraft.getInstance().player.sendMessage(
                                new StringTextComponent("§c[Server]§f " + message),
                                Minecraft.getInstance().player.getUniqueID()
                        );
                    }
                }
            } catch (IOException e) {
                System.out.println("Connection to socket server failed: " + e.getMessage());
            }
        });
    }

5. вообще сервер надо было сначала но ладно -
code socket server:

Socket server:
Код:
Expand Collapse Copy
package dev.m1le;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;

public class Main {
private static final int PORT = ваш порт от хоста;
private static List<ClientHandler> clients = Collections.synchronizedList(new ArrayList<>());
private static ServerSocket server;
private static boolean running = true;

public static void main(String[] args) {
startServer();
}

public static void startServer() {
try {
server = new ServerSocket(PORT);
System.out.println("§aIRC сервер запущен на порту " + PORT);
System.out.println("§fДоступные команды:");
System.out.println("§b/send <сообщение> §f- отправить сообщение всем");
System.out.println("§b/list §f- показать подключенных клиентов");
System.out.println("§b/stop §f- остановить сервер");

new Thread(() -> {
while (!server.isClosed()) {
try {
Socket socket = server.accept();
ClientHandler clientHandler = new ClientHandler(socket);
clients.add(clientHandler);
clientHandler.start();
System.out.println("§eНовое подключение: " + socket.getInetAddress());
} catch (IOException e) {
if (!server.isClosed()) {
System.out.println("§cОшибка подключения: " + e.getMessage());
}
}
}
}).start();

new Thread(() -> {
try (Scanner scanner = new Scanner(System.in)) {
while (running) {
String input = scanner.nextLine().trim();

if (input.equalsIgnoreCase("/stop")) {
stopServer();
break;
} else if (input.startsWith("/send ")) {
String message = input.substring(6);
broadcast("§d[Сервер]§f " + message);
System.out.println("§aСообщение отправлено всем клиентам");
} else if (input.equalsIgnoreCase("/list")) {
listClients();
} else {
System.out.println("§cНеизвестная команда");
}
}
}
}).start();

} catch (IOException e) {
System.out.println("§cНе удалось запустить сервер: " + e.getMessage());
}
}

public static void listClients() {
System.out.println("§6Подключенные клиенты (" + clients.size() + "):");
for (ClientHandler client : clients) {
System.out.println("- " + client.getClientInfo());
}
}

public static void stopServer() {
running = false;
try {
broadcast("§cСервер отключается...");

for (ClientHandler client : new ArrayList<>(clients)) {
client.close();
}

if (server != null) {
server.close();
}

System.out.println("§cСервер остановлен");
} catch (IOException e) {
System.out.println("§cОшибка при остановке сервера: " + e.getMessage());
}
}

public static void broadcast(String message) {
synchronized(clients) {
for (ClientHandler client : new ArrayList<>(clients)) {
client.sendMessage(message);
}
}
}

private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String nickname;

public ClientHandler(Socket socket) {
this.socket = socket;
this.nickname = "Гость_" + (int)(Math.random() * 1000);
}

public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);

sendMessage("§aДобро пожаловать на IRC сервер!");
sendMessage("§fИспользуйте /nick <имя> чтобы сменить ник");
broadcast("§e" + nickname + " §fподключился к чату");

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.startsWith("/nick ")) {
String newNick = inputLine.substring(6).trim();
if (!newNick.isEmpty()) {
broadcast("§e" + nickname + " §fсменил ник на §e" + newNick);
nickname = newNick;
sendMessage("§aТеперь ваш ник: " + nickname);
}
} else {
System.out.println("[" + nickname + "] " + inputLine);
broadcast("§b" + nickname + ":§f " + inputLine);
}
}
} catch (IOException e) {
System.out.println("§cКлиент отключился: " + nickname);
} finally {
close();
}
}

public void sendMessage(String message) {
out.println(message);
}

public String getClientInfo() {
return nickname + " (" + socket.getInetAddress() + ")";
}

public void close() {
try {
if (in != null) in.close();
if (out != null) out.close();
if (socket != null) socket.close();
clients.remove(this);
broadcast("§c" + nickname + " §fпокинул чат");
} catch (IOException e) {
System.out.println("§cОшибка при отключении клиента: " + e.getMessage());
}
}
}
}
6. загружаете сервер на любой хостинг бесплатный, платный,неважно хоть с локалки хостите и запускаете, порт пишете в коде от вашего хоста
1745250994482.png


7. Запускаете сервер затем клиент, на сервере пишете send (сообщение) в панельке и на клиент приходит сообщение)
хуясе, прикол
 
как сокет то сделать? ввиде плагина или что?
 
Короче смысл в чем, вы берёте любой фри хостинг грузите туда сокет сервер,и вы с сервера можете писать любое сообщение и оно придёт на все клиенты которые играют тоесть всем кто подключен к серверу также на сервере есть зачатки ирц чата но я его не сделал не обращайте внимания
Пожалуйста, авторизуйтесь для просмотра ссылки.

Туториал (для евы и экспы но по сути работать должно на всех базах):
1. открываем мэин класс софта
2. ищём метод ClientLoad или что-то такое ну в общем где загружаются модули
3. вставляем строчку: connectToSocketServer("тут ваш айпи", тут порт ( от хоста где сервер ) );
1745250595837.png


4. вставляем метод после конца метода ClientLoad ( необязательно именно после )

connectToSocketServer:


Код:
Expand Collapse Copy
    private void connectToSocketServer(String host, int port) {
        socketExecutor = Executors.newSingleThreadExecutor();
        socketExecutor.execute(() -> {
            try {
                socket = new Socket(host, port);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);

                System.out.println("Connected to socket server at " + host + ":" + port);

                String message;
                while ((message = in.readLine()) != null) {
                    System.out.println("[Server Message] " + message);
                    notifyManager.register("[Server] message:   " + message, NotifyType.WARN, 5000);
                    if (Minecraft.getInstance().player != null) {
                        Minecraft.getInstance().player.sendMessage(
                                new StringTextComponent("§c[Server]§f " + message),
                                Minecraft.getInstance().player.getUniqueID()
                        );
                    }
                }
            } catch (IOException e) {
                System.out.println("Connection to socket server failed: " + e.getMessage());
            }
        });
    }

5. вообще сервер надо было сначала но ладно -
code socket server:

Socket server:
Код:
Expand Collapse Copy
package dev.m1le;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;

public class Main {
private static final int PORT = ваш порт от хоста;
private static List<ClientHandler> clients = Collections.synchronizedList(new ArrayList<>());
private static ServerSocket server;
private static boolean running = true;

public static void main(String[] args) {
startServer();
}

public static void startServer() {
try {
server = new ServerSocket(PORT);
System.out.println("§aIRC сервер запущен на порту " + PORT);
System.out.println("§fДоступные команды:");
System.out.println("§b/send <сообщение> §f- отправить сообщение всем");
System.out.println("§b/list §f- показать подключенных клиентов");
System.out.println("§b/stop §f- остановить сервер");

new Thread(() -> {
while (!server.isClosed()) {
try {
Socket socket = server.accept();
ClientHandler clientHandler = new ClientHandler(socket);
clients.add(clientHandler);
clientHandler.start();
System.out.println("§eНовое подключение: " + socket.getInetAddress());
} catch (IOException e) {
if (!server.isClosed()) {
System.out.println("§cОшибка подключения: " + e.getMessage());
}
}
}
}).start();

new Thread(() -> {
try (Scanner scanner = new Scanner(System.in)) {
while (running) {
String input = scanner.nextLine().trim();

if (input.equalsIgnoreCase("/stop")) {
stopServer();
break;
} else if (input.startsWith("/send ")) {
String message = input.substring(6);
broadcast("§d[Сервер]§f " + message);
System.out.println("§aСообщение отправлено всем клиентам");
} else if (input.equalsIgnoreCase("/list")) {
listClients();
} else {
System.out.println("§cНеизвестная команда");
}
}
}
}).start();

} catch (IOException e) {
System.out.println("§cНе удалось запустить сервер: " + e.getMessage());
}
}

public static void listClients() {
System.out.println("§6Подключенные клиенты (" + clients.size() + "):");
for (ClientHandler client : clients) {
System.out.println("- " + client.getClientInfo());
}
}

public static void stopServer() {
running = false;
try {
broadcast("§cСервер отключается...");

for (ClientHandler client : new ArrayList<>(clients)) {
client.close();
}

if (server != null) {
server.close();
}

System.out.println("§cСервер остановлен");
} catch (IOException e) {
System.out.println("§cОшибка при остановке сервера: " + e.getMessage());
}
}

public static void broadcast(String message) {
synchronized(clients) {
for (ClientHandler client : new ArrayList<>(clients)) {
client.sendMessage(message);
}
}
}

private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String nickname;

public ClientHandler(Socket socket) {
this.socket = socket;
this.nickname = "Гость_" + (int)(Math.random() * 1000);
}

public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);

sendMessage("§aДобро пожаловать на IRC сервер!");
sendMessage("§fИспользуйте /nick <имя> чтобы сменить ник");
broadcast("§e" + nickname + " §fподключился к чату");

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.startsWith("/nick ")) {
String newNick = inputLine.substring(6).trim();
if (!newNick.isEmpty()) {
broadcast("§e" + nickname + " §fсменил ник на §e" + newNick);
nickname = newNick;
sendMessage("§aТеперь ваш ник: " + nickname);
}
} else {
System.out.println("[" + nickname + "] " + inputLine);
broadcast("§b" + nickname + ":§f " + inputLine);
}
}
} catch (IOException e) {
System.out.println("§cКлиент отключился: " + nickname);
} finally {
close();
}
}

public void sendMessage(String message) {
out.println(message);
}

public String getClientInfo() {
return nickname + " (" + socket.getInetAddress() + ")";
}

public void close() {
try {
if (in != null) in.close();
if (out != null) out.close();
if (socket != null) socket.close();
clients.remove(this);
broadcast("§c" + nickname + " §fпокинул чат");
} catch (IOException e) {
System.out.println("§cОшибка при отключении клиента: " + e.getMessage());
}
}
}
}
6. загружаете сервер на любой хостинг бесплатный, платный,неважно хоть с локалки хостите и запускаете, порт пишете в коде от вашего хоста
1745250994482.png


7. Запускаете сервер затем клиент, на сервере пишете send (сообщение) в панельке и на клиент приходит сообщение)
интересненько, сижу пащу, только проблемка какой нахуй еще socketexecutor
 
интересненько, сижу пащу, только проблемка какой нахуй еще socketexecutor
спроси чата гпт я давно писал этот код, ща чекну мб скажу
спроси чата гпт я давно писал этот код, ща чекну мб скажу
private ExecutorService socketExecutor;
 
Короче смысл в чем, вы берёте любой фри хостинг грузите туда сокет сервер,и вы с сервера можете писать любое сообщение и оно придёт на все клиенты которые играют тоесть всем кто подключен к серверу также на сервере есть зачатки ирц чата но я его не сделал не обращайте внимания
Пожалуйста, авторизуйтесь для просмотра ссылки.

Туториал (для евы и экспы но по сути работать должно на всех базах):
1. открываем мэин класс софта
2. ищём метод ClientLoad или что-то такое ну в общем где загружаются модули
3. вставляем строчку: connectToSocketServer("тут ваш айпи", тут порт ( от хоста где сервер ) );
1745250595837.png


4. вставляем метод после конца метода ClientLoad ( необязательно именно после )

connectToSocketServer:


Код:
Expand Collapse Copy
    private void connectToSocketServer(String host, int port) {
        socketExecutor = Executors.newSingleThreadExecutor();
        socketExecutor.execute(() -> {
            try {
                socket = new Socket(host, port);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);

                System.out.println("Connected to socket server at " + host + ":" + port);

                String message;
                while ((message = in.readLine()) != null) {
                    System.out.println("[Server Message] " + message);
                    notifyManager.register("[Server] message:   " + message, NotifyType.WARN, 5000);
                    if (Minecraft.getInstance().player != null) {
                        Minecraft.getInstance().player.sendMessage(
                                new StringTextComponent("§c[Server]§f " + message),
                                Minecraft.getInstance().player.getUniqueID()
                        );
                    }
                }
            } catch (IOException e) {
                System.out.println("Connection to socket server failed: " + e.getMessage());
            }
        });
    }

5. вообще сервер надо было сначала но ладно -
code socket server:

Socket server:
Код:
Expand Collapse Copy
package dev.m1le;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;

public class Main {
private static final int PORT = ваш порт от хоста;
private static List<ClientHandler> clients = Collections.synchronizedList(new ArrayList<>());
private static ServerSocket server;
private static boolean running = true;

public static void main(String[] args) {
startServer();
}

public static void startServer() {
try {
server = new ServerSocket(PORT);
System.out.println("§aIRC сервер запущен на порту " + PORT);
System.out.println("§fДоступные команды:");
System.out.println("§b/send <сообщение> §f- отправить сообщение всем");
System.out.println("§b/list §f- показать подключенных клиентов");
System.out.println("§b/stop §f- остановить сервер");

new Thread(() -> {
while (!server.isClosed()) {
try {
Socket socket = server.accept();
ClientHandler clientHandler = new ClientHandler(socket);
clients.add(clientHandler);
clientHandler.start();
System.out.println("§eНовое подключение: " + socket.getInetAddress());
} catch (IOException e) {
if (!server.isClosed()) {
System.out.println("§cОшибка подключения: " + e.getMessage());
}
}
}
}).start();

new Thread(() -> {
try (Scanner scanner = new Scanner(System.in)) {
while (running) {
String input = scanner.nextLine().trim();

if (input.equalsIgnoreCase("/stop")) {
stopServer();
break;
} else if (input.startsWith("/send ")) {
String message = input.substring(6);
broadcast("§d[Сервер]§f " + message);
System.out.println("§aСообщение отправлено всем клиентам");
} else if (input.equalsIgnoreCase("/list")) {
listClients();
} else {
System.out.println("§cНеизвестная команда");
}
}
}
}).start();

} catch (IOException e) {
System.out.println("§cНе удалось запустить сервер: " + e.getMessage());
}
}

public static void listClients() {
System.out.println("§6Подключенные клиенты (" + clients.size() + "):");
for (ClientHandler client : clients) {
System.out.println("- " + client.getClientInfo());
}
}

public static void stopServer() {
running = false;
try {
broadcast("§cСервер отключается...");

for (ClientHandler client : new ArrayList<>(clients)) {
client.close();
}

if (server != null) {
server.close();
}

System.out.println("§cСервер остановлен");
} catch (IOException e) {
System.out.println("§cОшибка при остановке сервера: " + e.getMessage());
}
}

public static void broadcast(String message) {
synchronized(clients) {
for (ClientHandler client : new ArrayList<>(clients)) {
client.sendMessage(message);
}
}
}

private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String nickname;

public ClientHandler(Socket socket) {
this.socket = socket;
this.nickname = "Гость_" + (int)(Math.random() * 1000);
}

public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);

sendMessage("§aДобро пожаловать на IRC сервер!");
sendMessage("§fИспользуйте /nick <имя> чтобы сменить ник");
broadcast("§e" + nickname + " §fподключился к чату");

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.startsWith("/nick ")) {
String newNick = inputLine.substring(6).trim();
if (!newNick.isEmpty()) {
broadcast("§e" + nickname + " §fсменил ник на §e" + newNick);
nickname = newNick;
sendMessage("§aТеперь ваш ник: " + nickname);
}
} else {
System.out.println("[" + nickname + "] " + inputLine);
broadcast("§b" + nickname + ":§f " + inputLine);
}
}
} catch (IOException e) {
System.out.println("§cКлиент отключился: " + nickname);
} finally {
close();
}
}

public void sendMessage(String message) {
out.println(message);
}

public String getClientInfo() {
return nickname + " (" + socket.getInetAddress() + ")";
}

public void close() {
try {
if (in != null) in.close();
if (out != null) out.close();
if (socket != null) socket.close();
clients.remove(this);
broadcast("§c" + nickname + " §fпокинул чат");
} catch (IOException e) {
System.out.println("§cОшибка при отключении клиента: " + e.getMessage());
}
}
}
}
6. загружаете сервер на любой хостинг бесплатный, платный,неважно хоть с локалки хостите и запускаете, порт пишете в коде от вашего хоста
1745250994482.png


7. Запускаете сервер затем клиент, на сервере пишете send (сообщение) в панельке и на клиент приходит сообщение)
upd.
В мэйн классе чита :
Код:
Expand Collapse Copy
 private ExecutorService socketExecutor;
Задумка прикольная
 
Короче смысл в чем, вы берёте любой фри хостинг грузите туда сокет сервер,и вы с сервера можете писать любое сообщение и оно придёт на все клиенты которые играют тоесть всем кто подключен к серверу также на сервере есть зачатки ирц чата но я его не сделал не обращайте внимания
Пожалуйста, авторизуйтесь для просмотра ссылки.

Туториал (для евы и экспы но по сути работать должно на всех базах):
1. открываем мэин класс софта
2. ищём метод ClientLoad или что-то такое ну в общем где загружаются модули
3. вставляем строчку: connectToSocketServer("тут ваш айпи", тут порт ( от хоста где сервер ) );
1745250595837.png


4. вставляем метод после конца метода ClientLoad ( необязательно именно после )

connectToSocketServer:


Код:
Expand Collapse Copy
    private void connectToSocketServer(String host, int port) {
        socketExecutor = Executors.newSingleThreadExecutor();
        socketExecutor.execute(() -> {
            try {
                socket = new Socket(host, port);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);

                System.out.println("Connected to socket server at " + host + ":" + port);

                String message;
                while ((message = in.readLine()) != null) {
                    System.out.println("[Server Message] " + message);
                    notifyManager.register("[Server] message:   " + message, NotifyType.WARN, 5000);
                    if (Minecraft.getInstance().player != null) {
                        Minecraft.getInstance().player.sendMessage(
                                new StringTextComponent("§c[Server]§f " + message),
                                Minecraft.getInstance().player.getUniqueID()
                        );
                    }
                }
            } catch (IOException e) {
                System.out.println("Connection to socket server failed: " + e.getMessage());
            }
        });
    }

5. вообще сервер надо было сначала но ладно -
code socket server:

Socket server:
Код:
Expand Collapse Copy
package dev.m1le;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;

public class Main {
private static final int PORT = ваш порт от хоста;
private static List<ClientHandler> clients = Collections.synchronizedList(new ArrayList<>());
private static ServerSocket server;
private static boolean running = true;

public static void main(String[] args) {
startServer();
}

public static void startServer() {
try {
server = new ServerSocket(PORT);
System.out.println("§aIRC сервер запущен на порту " + PORT);
System.out.println("§fДоступные команды:");
System.out.println("§b/send <сообщение> §f- отправить сообщение всем");
System.out.println("§b/list §f- показать подключенных клиентов");
System.out.println("§b/stop §f- остановить сервер");

new Thread(() -> {
while (!server.isClosed()) {
try {
Socket socket = server.accept();
ClientHandler clientHandler = new ClientHandler(socket);
clients.add(clientHandler);
clientHandler.start();
System.out.println("§eНовое подключение: " + socket.getInetAddress());
} catch (IOException e) {
if (!server.isClosed()) {
System.out.println("§cОшибка подключения: " + e.getMessage());
}
}
}
}).start();

new Thread(() -> {
try (Scanner scanner = new Scanner(System.in)) {
while (running) {
String input = scanner.nextLine().trim();

if (input.equalsIgnoreCase("/stop")) {
stopServer();
break;
} else if (input.startsWith("/send ")) {
String message = input.substring(6);
broadcast("§d[Сервер]§f " + message);
System.out.println("§aСообщение отправлено всем клиентам");
} else if (input.equalsIgnoreCase("/list")) {
listClients();
} else {
System.out.println("§cНеизвестная команда");
}
}
}
}).start();

} catch (IOException e) {
System.out.println("§cНе удалось запустить сервер: " + e.getMessage());
}
}

public static void listClients() {
System.out.println("§6Подключенные клиенты (" + clients.size() + "):");
for (ClientHandler client : clients) {
System.out.println("- " + client.getClientInfo());
}
}

public static void stopServer() {
running = false;
try {
broadcast("§cСервер отключается...");

for (ClientHandler client : new ArrayList<>(clients)) {
client.close();
}

if (server != null) {
server.close();
}

System.out.println("§cСервер остановлен");
} catch (IOException e) {
System.out.println("§cОшибка при остановке сервера: " + e.getMessage());
}
}

public static void broadcast(String message) {
synchronized(clients) {
for (ClientHandler client : new ArrayList<>(clients)) {
client.sendMessage(message);
}
}
}

private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String nickname;

public ClientHandler(Socket socket) {
this.socket = socket;
this.nickname = "Гость_" + (int)(Math.random() * 1000);
}

public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);

sendMessage("§aДобро пожаловать на IRC сервер!");
sendMessage("§fИспользуйте /nick <имя> чтобы сменить ник");
broadcast("§e" + nickname + " §fподключился к чату");

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.startsWith("/nick ")) {
String newNick = inputLine.substring(6).trim();
if (!newNick.isEmpty()) {
broadcast("§e" + nickname + " §fсменил ник на §e" + newNick);
nickname = newNick;
sendMessage("§aТеперь ваш ник: " + nickname);
}
} else {
System.out.println("[" + nickname + "] " + inputLine);
broadcast("§b" + nickname + ":§f " + inputLine);
}
}
} catch (IOException e) {
System.out.println("§cКлиент отключился: " + nickname);
} finally {
close();
}
}

public void sendMessage(String message) {
out.println(message);
}

public String getClientInfo() {
return nickname + " (" + socket.getInetAddress() + ")";
}

public void close() {
try {
if (in != null) in.close();
if (out != null) out.close();
if (socket != null) socket.close();
clients.remove(this);
broadcast("§c" + nickname + " §fпокинул чат");
} catch (IOException e) {
System.out.println("§cОшибка при отключении клиента: " + e.getMessage());
}
}
}
}
6. загружаете сервер на любой хостинг бесплатный, платный,неважно хоть с локалки хостите и запускаете, порт пишете в коде от вашего хоста
1745250994482.png


7. Запускаете сервер затем клиент, на сервере пишете send (сообщение) в панельке и на клиент приходит сообщение)
upd.
В мэйн классе чита :
Код:
Expand Collapse Copy
 private ExecutorService socketExecutor;
Минусы:

Безопасность = 0
Любой может подключиться, если знает IP и порт
Нет шифрования, аутентификации, валидации

Добавил бы самый простой хендшейк с паролем или вайт лист по ip
 
Назад
Сверху Снизу