UDP-сокеты на Flash.
:write:
Маловероятно, что я найду такого человека тут, но всё же. Ребятки, очень нужна реализация UDP-сокетов на Flash с внешним JavaScript-API. Т.е. примерно это должно выглядеть так: var socket = new FlashSocket(ip, port); socket.on('message', function (response) { }); // error, close socket.send(query); socket.close(); Я знаю, что на флеше это реализовать реально. Если вы знаете другие кроссбраузерные способы, не требующие установки сторонних плагинов - не вопрос. Главное - результат. Я плохо представляю сколько это будет стоить, но специально для Gozar-а напишу: Цена - 1000р, способ оплаты - банковский/почтовый перевод, Webmoney или наличными в руки, если вы из Москвы. |
А кто мешает реализовать это самому? работа с Datagram во флешь конечно же реальна. и в принципе не сложна. Я так понимаю нужно реализовать общение с JavaScript? Дык это еще проще.
|
devote,
Позволю себе предположить, что человек не знает ActionScript. Обычно по этому и просят выполнить работу, ведь топик как раз в соответствующем разделе. |
50$
Сделаю прокси к классу http://help.adobe.com/en_US/FlashPla...ramSocket.html Работать будет с 9-й версии Flash Player |
Цитата:
ЗЫ. Но тем не менее там не сложно, было бы у меня время, написал бы. |
Цитата:
Gvozd, напиши мне в скайп. |
Цитата:
хотя иногда бывает на нем пишу что-то если требуется кроссбраузерность. |
Up :(
Оплата - 1500к. devote, может у тебя найдется вдруг время? |
B~Vladi,
а что с Gvozd не срослось? |
В двух словах: не справился, он вообще не по этой области в основном. Если интересны подробности - отпишу в личку.
|
B~Vladi, а что за задача? Может лучше отталкиваться от нее?
|
Цитата:
Есть несколько тысяч удаленных демонов, имеющих некоторое публичное UDP API, т.е. по определённым запросам отдается определённая инфа. Хотелось бы перенаправить трафик с клиентов на них, минуя мой server-side. |
На Flash можно это 100 процентов.
Но мне кажется на java попроще. чото я не вьехал тебе клиент или сервер нужен ))) Ну вот клиент слущающий порт выглядил бы так. // библиотеки для сетки import java.net.*; // библиотеки ввода вывода import java.io.*; // подключаем пакет для взаимодействия с javaScript import netscape.javascript.*; public static void main(String[] args)( // отлавливаем исключения try{ // создаём сокет присоединяем к порту 1050 на локальной машине DatagramSocket ds = new DatagramSocket(1050); // бесконечный цикл while (true){ // создается дейтаграммный пакет DatagramPacket pack =new DatagramPacket(new byte[1024], 1024); // ждём получения пакета ds.receive(pack); //действие после получения пакета с данными // вывод (пример 1, пригодится для отладки) System.out.println(new String(pack.getData())); // передача данных в javaScript(пример 2) // получить ссылку на окно (объект window) JSObject win = JSObject.getWindow(this); // создадим массив аргументов String argums[] = new String[1]; // аргументы // при передачи датаграммы из pack.getData() на javaScript, привести данные из pack.getData() к массиву params нужно будет здесь. argums[0] = "My message"; // вызовем пользовательский метод test на JavaScript win.call("test", argums); } )catch(Exception e){ // действия в случае исключения System.out.println(e); } } на JAVA практически не пишу так что прошу прощения за неточности если есть. |
кажется я понял задачу чуть глубже, ну тогда как то так.
код javaScript //ccылка на апплет для доступа к методам аплета udp=document.applets[0]; // определяем куда конектимся udp.connect("localHost",1500); //отправляем запрос udp.SetQuere ("hello World"); // получаем ответ function test (data){ alert (data); } Java апплет import java.awt.*; // это класс аплета import java.applet.Applet; //это для сетки import java.net.*; //нужно для вывода import java.io.*; //нужно для вызова методов javaScript import netscape.javascript.*; //наш аплет это дочерний класс от класса Applet. public class myapplet extends Applet { //переменная с адресом устанавливается методом connect и храниться в аплете private String host; //переменная с портом устанавливается методом connect и храниться в аплете private int port; // метод инициализации данных для соединения вызывается из javaScript public void Connect (String host, int port){ this.host = host; //устанавливаем адрес this.port = port; //устанавливаем порт } // этот метод мы будем вызывать из javaScript для отправления пакета, и последующего получения ответа public void sendQuere(String mes){ try{ // превращаем строку в последовательность байт byte[] data = mes.getBytes(); // получим ip адрес InetAddress addr = InetAddress.getByName(host); //создадим дейтаграмный пакет DatagramPacket pack = new DatagramPacket(data, data.length, addr, port); //создается дейтаграммный сокет DatagramSocket ds = new DatagramSocket(); //дейтаграмма отправляется ds.send(pack); // закрываем сокет ds.close(); // ура, данные мы отправили давайте теперь дождёмся ответа, хотя за ответами мог бы и другой аплет следить // создадим сокет, устанавливать сокет можно также из метода connect если угодно, но здесь он у нас вписан намертво DatagramSocket ds = new DatagramSocket(1050); // пакет DatagramPacket pack =new DatagramPacket(new byte[1024], 1024); // ждём получения пакета ds.receive(pack); //действие после получения пакета с данными // вывод (пример 1, пригодится для отладки) System.out.println(new String(pack.getData())); // передача данных в javaScript(пример 2) // получить ссылку на окно (объект window) JSObject win = JSObject.getWindow(this); // создадим массив аргументов String argums[] = new String[1]; // аргументы // при передачи датаграммы из pack.getData() на javaScript, привести данные из pack.getData() к массиву params нужно будет здесь. argums[0] = "My message"; // вызовем пользовательский метод test на JavaScript win.call("test", argums); }catch(IOException e){ System.err.println(e); } } public void init() { //инициализация чего нибудь в момент создания аплета, если нужно )) } } код html <APPLET CODE=myapplet.class WIDTH=150 HEIGHT=25> </APPLET> p.s. Код написан только по документации, и непреверен. Так что со всем этим добром я бы на вашем месте обратился на java форум дабы они указали на ошибки или за скромную плату довели пример до рабочего состояния. Надеюсь хоть как-то помог. |
Цитата:
Посмотри Adobe Cirrus/Stratus и Cumulus, они используют RTMFP, второй открытую реализацию. Также советую посмотеть один интересный проект Web-RTC |
DjDiablo,
Возможность использования Java-аплетов обсуждалась - не катит monolithed, читайте внимательнее Цитата:
RTMFP - не то, так как это протокол поверх UDP же |
Цитата:
А вообще интересно что это за тысячи демонов такие. неужто B~Vladi с адом пытается связаться и сатану призвать. :lol: Вот он 2012 год, а я знал что всё начнётся с этого форума, я знал ! )) Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
присоеденяюсь к вопросу почему?.
Ведь там предложены уже готовые библиотеки для работы с серверами, в java/php/руби/Python/perl/vb.net. Java библиотеку как раз можно было бы приспособить для клиентcкой стороны. В крайнем случае, взаимодействие может происходить по общим методам предоставленными прослойкой на javaScript. Но там где это возможно будет работать аплет, а там где аплет не работает взаимодействовать через серверную сторону. Это будет практически 100% покрытие всех платформ (даже выше чем у flash). |
Цитата:
Цитата:
|
Цитата:
|
Подниму-ка тему. Влади, ты нашел такое? Потому как я тоже столнулся с поисками UDP на флеше. В хроме пробегала както chrome.experements.socket но его закрыли. А доступен только в аппликейшинах как chrome.socket.
|
Часовой пояс GMT +3, время: 01:26. |