Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

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

Anna | 4.06.2014 | нет комментариев
Здравствуй читатель програ, сегодня я тебе расскажу о такой пригодной библиотеке как KryoNet. С поддержкой тот, что вы сумеете легко написать сервер

Где скачать KryoNet

KryoNet вы можете скачать её тут
Позже того как вы скачали архив откройте его в любом архиваторе и направляйтесь в папку jars/production/onejar, там вы обнаружит наш KryoNet подключайте его к Eclipse и пользуйтесь.

Как сделать примитивный сервер

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

Пишем сервер

Так наш сервер будет состоять из 2-х файлов это 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;
}

Запускаем наш сервер
Получаем в консоли результат

Создаем сервер
Пишем клиентскую часть

У нас с вами клиентская часть будет состоять так же из 2-х файлов это 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
Заказчик оставил сервер!

 

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB