Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250

Связь между приложениями

03.01.2013, 22:07. Показов 3535. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли установить связь между приложениями, не создавая для этого сервер? Может есть готовый бесплатный сервиз?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2013, 22:07
Ответы с готовыми решениями:

Связь между приложениями
Подскажите, пожалуста, как можно с помощью WInAPI функций связывать приложения между собой и заставить обмениваться их данными? то есть...

Переменные и связь между приложениями
У меня вопрос любопытства ради, может кто-то из Вас и сталкивался. К примеру существует два отдельных экзешника на VB. Возможно ли запустив...

Связь между двумя приложениями
Здравствуйте, у меня такой вопрос: как организовать связь между двумя приложениями написанными на C#. Суть вот в чём одно приложение...

23
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
03.01.2013, 22:21
chiribas, это реализуемо через, например, p2p. Если swf располагаются на одном ПК - LocalConnection.
...может есть еще варианты, но я их или не припоминаю, или не знаю.
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
03.01.2013, 22:29  [ТС]
p2p это бесплатно? и если не трудно можете показать пример(в одном приложение нажимаешь кнопку, а в другом появляется " Trace("") " ) или хотя бы ссылку на урок. Буду очень благодарен.
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
03.01.2013, 22:33
Это видео нашел через поиск с официального сайта Adobe. Объясняются основы. Чтение документации по упомянутым классам должно еще больше прояснить ситуацию.
1
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
04.01.2013, 16:28  [ТС]
Я сделал простой чат, но в браузере плеер не разрешает использовать сеть. Как разрешить доступ к сети?
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.01.2013, 16:45
chiribas, откуда запускается swf? Если с жесткого диска, то или поковыряться в настройках безопасности (добавить доверенные папки/файлы) или запускать с сервера (даже локального)

Добавлено через 41 секунду
Цитата Сообщение от chiribas Посмотреть сообщение
не разрешает использовать сеть
И подобные фразы не плохо бы подкреплять цитированием ошибки/сообщения
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
04.01.2013, 16:52  [ТС]
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.01.2013, 17:10
Ответ прежний
Цитата Сообщение от TanaTiX Посмотреть сообщение
или поковыряться в настройках безопасности (добавить доверенные папки/файлы) или запускать с сервера (даже локального)
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
04.01.2013, 17:22  [ТС]
Запустил с сервера, с довереностью всё нормально, но не передаются сообщения
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.01.2013, 17:24
chiribas, ну не могу я угадывать, что там у вас происходит - ни текста ошибки, если таковые имеются, ни пример кода, ни исходники проекта. Я, как и другие форумчане, не телепат.
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
04.01.2013, 18:14  [ТС]
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var netConnection:NetConnection = new NetConnection();
var netGroup:NetGroup;
var netStream:NetStream;
var groupspec:GroupSpecifier;
 
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
function netStatusHandler(e:NetStatusEvent):void
{
    switch (e.info.code)
    {
        case 'NetConnection.Connect.Success' :
            groupspec = new GroupSpecifier("K1");
            groupspec.serverChannelEnabled = true;
            groupspec.multicastEnabled = true;
            groupspec.postingEnabled = true;
            groupspec.routingEnabled = true;
            groupspec.peerToPeerDisabled = false;
            netStream = new NetStream(netConnection,groupspec.groupspecWithAuthorizations());
 
            trace("Connect!");
            break;
        case 'NetStream.Connect.Success' :
            netGroup = new NetGroup(netConnection,groupspec.groupspecWithAuthorizations());
            trace("ConnectGroup!");
            break;
        case 'NetGroup.Connect.Success' :
            break;
        case 'NetGroup.Posting.Notify' : //Пришло сообщение
            trace("Message: " + e.info.message); //Здесь клип B переходит на второй кадр(становится красным)
            break;
        default :
            break;
    }
}
 
netConnection.connect("rtmfp://p2p.rtmfp.net", "мой_ключ");//Подключение
 
B.addEventListener(MouseEvent.CLICK,B_CLICK);//Отправка сообщения при нажатии на клип B
function B_CLICK(e:MouseEvent):void
{
    var obj:Object = {text:"Hello"};
    netGroup.sendToAllNeighbors(obj);
}
Ошибок не происходит, но при нажатии на другой клип в таком же запущенном приложении тоже ни чего не происходит
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.01.2013, 18:26
chiribas, странно, что ничего не происходит, т.к. у меня пишет
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Untitled_fla::MainTimeline/B_CLICK()
Добавлено через 22 секунды
При этом netGroup - тот самый null
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
04.01.2013, 18:32  [ТС]
TanaTiX, скорее всего надо подождать когда произойдёт соединение?

ActionScript 3
1
2
3
4
case 'NetStream.Connect.Success' :
netGroup = new NetGroup(netConnection,groupspec.groupspecWithAuthorizations());
trace("ConnectGroup!");
break;
тут он перестанет быть null
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.01.2013, 18:54
chiribas, как-то тестировал эту фичу, сейчас гляну свои старые исходники.

Добавлено через 19 минут
В моем проекте 3 класса: основной, класс для работы с соединением и событие.
Писалось все давно и почти на коленке, так что могут быть различные погрешности.
Кликните здесь для просмотра всего текста
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.ui.Keyboard;
    
    public class Main extends Sprite 
    {
        
        
        private var _txt:TextField;
        private var _commonGroup:PrivateGroup;
 
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            
            _txt = new TextField();
            _txt.autoSize = TextFieldAutoSize.LEFT;
            _txt.border = true;
            addChild(_txt);
            
            _commonGroup = new PrivateGroup();
            _commonGroup.addEventListener(PrivateGroup.INIT, onGroupInit, false, 0, true);
            _commonGroup.addEventListener(StringEvent.GET_MESSAGE, onGetMessage, false, 0, true);
            _commonGroup.init();
        }
        
        private function onGetMessage(e:StringEvent):void 
        {
            if (_txt.text.length > 0) {
                _txt.appendText("\n");
            }
            _txt.appendText(e.message);
        }
        
        private function onGroupInit(e:Event):void 
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEvent);
        }
        
        private function onKeyEvent(e:KeyboardEvent):void 
        {
            if (e.keyCode == Keyboard.ENTER) {
                var mes:Object = { };
                var message:String = Math.random().toString();
                mes.text = message;
                _commonGroup.sendMessage(mes);
            }
        }
        
    }
    
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package  
{
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.NetStatusEvent;
    import flash.net.GroupSpecifier;
    import flash.net.NetConnection;
    import flash.net.NetGroup;
    import flash.net.NetStream;
    /**
     * ...
     * @author TanaTiX
     */
    public class PrivateGroup extends EventDispatcher
    {
        private const SERVER:String = "rtmfp://p2p.rtmfp.net/";//сервер
        private const DEVKEY:String = "ваш код";// получить его можно [url]http://www.adobe.com/cfusion/entitlement/index.cfm?e=cirrus[/url]
        private const GROUP:String = "название канала";// это название нашего канала
        static public const INIT:String = "init";
        
        private var _netConnection:NetConnection;
        private var _netStream:NetStream;
        private var _netGroup:NetGroup;
        private var _sequence:int;
        
        
        public function PrivateGroup() 
        {
            
        }
        public function init():void {
            _sequence = 0;
            
            _netConnection = new NetConnection();
            _netConnection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
            _netConnection.connect(SERVER + DEVKEY);
        }
        private function onNetStatus(e:NetStatusEvent):void 
        {
            trace("connect" + Math.random(), e.info.code);
            switch(e.info.code) {
                case "NetConnection.Connect.Success":{
                    onConnect();
                    break;
                }
                case "NetGroup.Connect.Success":{
                    onGroupConnect();
                    break;
                }
                case "NetGroup.Posting.Notify":{
                    onGetMessage(String(e.info.message.text));
                    break;
                }
            }
        }
        
        private function onConnect():void 
        {
            var gs:GroupSpecifier = new GroupSpecifier(GROUP);
            gs.postingEnabled = true;
            gs.serverChannelEnabled = true;
            _netGroup = new NetGroup(_netConnection, gs.groupspecWithAuthorizations());
            _netGroup.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
            
        }
        private function onGroupConnect():void {
            dispatchEvent(new Event(INIT));
        }
        
        private function onGetMessage(message:String):void {
            dispatchEvent(new StringEvent(StringEvent.GET_MESSAGE, message));
        }
        public function sendMessage(value:Object):void {
            value.sequnce = _sequence++;
            value.sender = _netConnection.nearID;
            _netGroup.post(value);
        }
    }
 
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package  
{
    import flash.events.Event;
    
    /**
     * ...
     * @author TanaTiX
     */
    public class StringEvent extends Event 
    {
        public static const GET_MESSAGE:String = "getMessage";
        private var _message:String;
        
        public function StringEvent(type:String, message:String, bubbles:Boolean=false, cancelable:Boolean=false) 
        { 
            super(type, bubbles, cancelable);
            _message = message;
            
        } 
        
        public override function clone():Event 
        { 
            return new StringEvent(type, _message, bubbles, cancelable);
        } 
        
        public override function toString():String 
        { 
            return formatToString("StringEvent", "message", "type", "bubbles", "cancelable", "eventPhase"); 
        }
        
        public function get message():String 
        {
            return _message;
        }
        
    }
    
}

Для тестирования запустить 2 (или более) копии приложения, и клацать ENTER при выделении одной из них - будет передаваться случайное число.
1
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
06.01.2013, 12:21  [ТС]
Как узнать что один из пользователей отключился?

Добавлено через 30 минут
Я уже узнал. Это происходит когда в netStatusHandler свойство e.info.code = 'NetGroup.Neighbor.Disconnect'.
А как узнать какой пользователь отключился?
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.01.2013, 12:57
chiribas, посмотри в хэндлере netStatusHandler объект события (JSON-ом его распарсь или через точку останова), там будет вся доступная информация. Еще при коннекте можно запоминать пользователей, а потом вычислять кого не хватает.
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
06.01.2013, 13:12  [ТС]
Я разобрался, я делаю так:
ActionScript 3
1
2
3
case 'NetGroup.Neighbor.Disconnect' :
trace(e.info.peerID)
break;
так я получаю id того кто вышел, и также кто зашёл. Как узнать свой ID? или как отправить сообщение пользователю с определённым ID?
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.01.2013, 13:16
Цитата Сообщение от chiribas Посмотреть сообщение
или как отправить сообщение пользователю с определённым ID
У вас должен быть отдельно настроенный канал.
0
 Аватар для chiribas
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
06.01.2013, 13:29  [ТС]
А это как? Можете объяснить если не трудно?
0
Модератор
 Аватар для TanaTiX
2935 / 1794 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.01.2013, 13:35
chiribas, так также, как и описано выше и работает сейчас
Создать еще одно "соединение"
Т.е. у тех 2х должны быть уникальные названия группы, более никому не доступные. Т.е. один из пользователей отправляет исходной группе что он хочет устроить тет-а-тет с тем-то пользователем (его id), все у кого id не соответствует проходят мимо, а те двое устраивают свой "междусобойчик". И да, это очень не секьюрно, таким образом передавать шифры из пентагона не стал бы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2013, 13:35
Помогаю со студенческими работами здесь

Как организовать связь между приложениями без статического IP. C++ Builder
Доброго времени суток Возникла задача предачи данных с другим офисом. С написанием ПО проблем вроде нет (использую INDY в Builder), но...

Как установить связь по bluetooth между приложениями без спаривания
Вопрос заключается в следующем: Предположим я пишу приложение на jme2. Это приложение будет установлено на 2-х телефонах, с поддержкой...

Обмен данных между DOS-приложениями и Windows-приложениями
Как настроить установки Windows 98, чтобы нажатием клавиши PrtSc рисунок, созданный Borland Pascal-программой, скопировался в буфер обмена?...

Сигналы между приложениями
Собственно. Есть служба и оболочка(программа) к ней... как отправить "сигнал" из программы к службе чтоб ее не перезапускать? желательно...

Обмен между приложениями
Есть два приложения в ОС Windows , одно консольное которое ждет ввода трех чисел std::cin , второе диалоговое , диалоговое запускает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru