Где скачать 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/
Добавить комментарий