Чудо-лопата «Пахарь»

рыхление земли

На российском рынке появился новый запатентованный садово-огородный инструмент чудо-лопата «Пахарь». Производство чудо-инструмента осуществляет Екатеринбургский инструментальный завод. Конструкция лопаты такова, что для рыхления почвы не требуется больших усилий, т.к. не нужно поднимать и поворачивать пласт земли, как это делается обычной лопатой. Это особенно важно для людей, страдающих остеохондрозом.

Читать →

Драйвера для wi-fi (3DSP) на нетбук DNS M1000 в Ubuntu

Выкладываю драйвера для своего нетбука DNS M1000 на случай возврата его к линуксу. Пользовался им примерно год, причем постоянно. Батарея держится примерно 4 часа. Помнится, 5 часов в дороге смотрел фильмы. Теперь им пользуется жена. Пришлось поставить Windows 7.  Читать →

Хранение садового шланга

Вам не приходилось замечать, сколько тратится времени на то, чтобы размотать садовый шланг для полива растений в саду, а затем снова свернуть его; чтобы убрать от посторонних глаз или из-под своих ног для безопасного перемещения по саду? Эти действия приходится выполнять при подготовке к скашиванию травы на газонах, чтобы случайно не повредить шланг при скашивании травы; с наступлением холодной погоды для предотвращения замерзания в нем воды. К тому же неаккуратно свернутые шланги выглядят не очень привлекательно.

сматывание шланга

Решение этого вопроса не представляет особой сложности – достаточно сделать приспособление для сматывания поливочного шланга.

Читать →

Гардеробная в прихожей

гардеробная в прихожей

Гардероб – наиболее удобный предмет мебели, которым может быть укомплектована ваша прихожая. Мебель, фото которой вы можете посмотреть в нашем каталоге, способна сделать даже очень маленькое помещение функциональным. Шкаф-гардероб может быть оформлен в разнообразных стилях, не только лишь в привычном для нас классическом.

Читать →

Запуск NettyJava на android эмуляторе

Сегодня 09.05.2012.
Сегодня произошла большая радость. Мне удалось откомпилировать и запустить мой тестовый консольный клиент, написанный на Netty, на android-эмуляторе!

Суть решения:
1. Создать в проекте папку «libs» и положить в неё netty.jar (ADT автоматически подгружает папку с таким именем)
2. Добавить программе разрешение на выход в интернет. В файле AndroidManifest.xml добавить запись

Просто рассказ:
Вчера я довёл до некоторого стабильного состояния классы Client и Server, основанные на NettyJava.
А сегодня утром написал короткое консольное приложение, которое может запускаться как сервер и клиент и цепляется к порту моего компьютера.
После отладки работы клиента и сервера под управлением JVM в Windows, я приступил к созданию тестового консольного приложения для Android.
Я думал, что меня встретят трудности, когда я попытаюсь использовать Client класс в android-приложении.

Так и произошло. Но на мою радость, я нашёл решение в google за один вечер.

Суть проблемы была в том, что хотя Eclipse и добавил JAR файл в текущий android-проект, но при запуске проекта на эмуляторе — библиотеку netty.jar не попадала на андроид.

Ответ оказался простым, во что я и верил, ADT плагин Eclipse не подгружал мой netty.jar.
Оказалось, что ADT подгружает внешние *.jar библиотеки только из папки «libs».
Я создал эту папку в своём проеке, поместил туда netty.jar и…
Мой клиент написанный на Netty заработал на Android эмуляторе!

Ниже пример клиент-серверной программы. (В данном состоянии пример не будет запускаться, т.к. здесь не хватает реализации классов Client и Server).

/**
* Пример клиент-серверной программы, написанной на NettyJava.

* Запуск сервера:

*
java -jar server.jar

* Запуск клиента: *

java -jar server.jar client

* На стороне клиента пишем сообщения и они отправляются на сервер в * пакете {@link Packet1Ping}. Сервер выводит пришедшие пакеты в стандартный поток * вывода. * * Клиент и сервер заточены для запуска с одного компьютера. * Сервер и клиент работают с localhost:8080 * @author Galiego710 * */ public class Main { public static final void out(String str) { System.out.println(str); } /** * @param args */ public static void main(String[] args) throws IOException { out("Program is started."); out("Print 'quit' or 'exit' to exit."); // запустить как клиент или сервер if ( (args.length > 0) && (args[0].equals("client"))) { ClientProgram(); } else { ServerProgram(); } out("Program is ended."); System.exit(0); } /** * Серверная часть * @throws IOException */ public static void ServerProgram() throws IOException { out("Mode: Server"); final Server server = new Server("MainServer", new InetSocketAddress("localhost",8080)); // Устанвить хук на завершение программы Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // отключить сервер server.stop(); out("ShutdownHook done."); } }); // Установить слушателя серверу server.setListener(new ConnectorListener() { @Override public void connectionOpen(ConnectorHandler handler) { out("+++ SERVER: Client connected."); } @Override public void packetReceived(ConnectorHandler handler, Packet packet) { out("+++ SERVER: received " + packet); } }); // Запуск сервера if(!server.start()) { System.err.println("Server can't started!"); } else { System.out.println("Server is started"); } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Обрабатывать ввод с клавиатуры String str; do { System.out.print("Enter: "); str = br.readLine(); out("str=" + str); } while (!(str.equals("quit") || str.equals("exit"))); } /** * Клиентская часть * @throws IOException */ public static void ClientProgram() throws IOException { out("Mode: Client"); final Client client = new Client("user","pass", new InetSocketAddress("localhost",8080)); // Установить хук на закрытие программы Runtime.getRuntime().addShutdownHook(new Thread() { public void run() {
// потушить сервер client.stop(); out("ShutdownHook done."); } }); // Запустить клиента if(!client.start()) { System.err.println("Client can't started!"); } else { System.out.println("Client is started"); } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Обрабатывать ввода с клавиатуры String str; do { System.out.print("Enter: "); str = br.readLine(); out("str=" + str); // отправить пакет client.sendPacket(new Packet1Ping(str)); } while (!(str.equals("quit") || str.equals("exit"))); } }
Смотрите также: NettyJava — асинхронный событийно ориентированный сетевой фреймворк

Автор: galiego710

Развивающая книжка

Развивающая книжка

Продолжаем украшать свою жизнь и жизнь всех окружающих, а особенно самых близких людей — своих деток. В этом уроке расскажем, как сделать развивающую книжку из ткани.

Развивающая книжка самодельная

Читать →