Здравствуй читатель хабра, сегодня я тебе расскажу о такой полезной библиотеке как KryoNet. С помощью который вы сможете легко написать сервер
Где скачать KryoNet
KryoNet вы можете скачать её здесь
После того как вы скачали архив откройте его в любом архиваторе и направляйтесь в папку jars/production/onejar, там вы найдет наш KryoNet подключайте его к Eclipse и пользуйтесь.
Как создать простейший сервер
В этом примере я покажу как можно создать сервер который будет отправлять клиенту текущие время.
Пишем сервер
Так наш сервер будет состоять из двух файлов это ServerProgram — это у нас собственно файл для запуска сервер, и PacketMessage — через этот пакет мы будем отправлять клиенту текущее время.
Приступаем к написанию класса ServerProgram
import java.util.Date;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.esotericsoftware.kryonet.Server;
public class ServerProgram extends Listener {
static Server server;
static int udpPort = 27960, tcpPort = 27960; // Порт на котором будет работать наш сервер
public static void main(String[] args) throws Exception {
System.out.println("Создаем сервер");
//Создаем сервер
server = new Server();
//Регистрируем пакет класс
server.getKryo().register(PacketMessage.class);
//Регистрируем порт
server.bind(tcpPort, udpPort);
//Запускаем сервер
server.start();
server.addListener(new ServerProgram());
}
//Используется когда клиент подключается к серверу
public void connected(Connection c){
System.out.println("На сервер подключился "+c.getRemoteAddressTCP().getHostString());
//Создаем сообщения пакета.
PacketMessage packetMessage = new PacketMessage();
//Пишем текст который будем отправлять клиенту.
packetMessage.message = "Сейчас время: "+new Date().getHours()+":"+new Date().getMinutes();
//Отправляем текст
c.sendTCP(packetMessage); // Так же можно отправить через UDP c.sendUDP(packetMessage);
}
//Используется когда клиент отправляет пакет серверу
public void received(Connection c, Object p){}
//Используется когда клиент покидает сервер.
public void disconnected(Connection c){
System.out.println("Клиент покинул сервер!");
}
}
PacketMessage
public class PacketMessage {
String message;
}
Запускаем наш сервер
Получаем в консоли ответ
Создаем сервер
Пишем клиентскую часть
У нас с вами клиентская часть будет состоять так же из двух файлов это ClientProgram — с помощью которого мы будем запускать наш клиент, и PacketMessage — с помощью которого мы будем регистрировать наш пакет
Начинаем писать ClientProgram
import com.esotericsoftware.kryonet.Client;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
public class ClientProgram extends Listener {
static Client client;
//IP сервера для подключения
static String ip = "localhost";
//Порт к которому мы будем подключатся
static int tcpPort = 27960, udpPort = 27960;
static boolean messageReceived = false;
public static void main(String[] args) throws Exception {
System.out.println("Подключаемся к серверу");
//
client = new Client();
//Регистрируем пакет
client.getKryo().register(PacketMessage.class);
//Запускаем клиент
client.start();
//Клиент начинает подключатся к серверу
//Клиент подключается к серверу
client.connect(5000, ip, tcpPort, udpPort);
client.addListener(new ClientProgram());
System.out.println("Вы подключились к серверу! Клиент ждет получения пакета...n");
while(!messageReceived){
Thread.sleep(1000);
}
System.out.println("Клиент покидает сервер");
System.exit(0);
}
public void received(Connection c, Object p){
//Проверяем какой отправляется пакет
if(p instanceof PacketMessage){
//Если мы получили PacketMessage .
PacketMessage packet = (PacketMessage) p;
System.out.println("Ответ от сервера: "+packet.message);
//Мы получили сообщение
messageReceived = true;
}
}
}
А класс PacketMessage будет идентичен классу PacketMessage из серверной части.
public class PacketMessage {
String message;
}
После запуска клиента мы получаем
Подключаемся к серверу
Вы подключились к серверу! Клиент ждет получения пакета...
Ответ от сервера: Сейчас время: 21:44
Клиент покидает сервер
Лог сервера
Создаем сервер
На сервер подключился 127.0.0.1
Клиент покинул сервер!
Автор: vadik777