KryoNet или пишем сервера легко

от автора

Здравствуй читатель хабра, сегодня я тебе расскажу о такой полезной библиотеке как 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 Клиент покинул сервер! 

ссылка на оригинал статьи http://habrahabr.ru/post/196750/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *