Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.01.2010, 01:36
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 11  
Ответить с цитированием
stinkybob

Регистрация: Jan 2010
Сообщений: 41
ООО!!!! Спасибо огромное а ты не подскажешь каким образом можно передать данные из этого сокет сервера как переменные во flash

а т.е.

в с++ 2 переменные Name и Sername
и их надо передат во flash так чтоб они были там переменными а не просто текстом.. хотя конечно можно по 1 переменной передавать в скрытое текстовое поле и по очереди присваивать перменной значение этого поля =) Просто может есть способ попроще? Мы же вроде используем в самом Флеше XML... я не понимю какой смысл и по моему передается тупо текст а не XML

Добавлено через 12 минут
А можно как-то клиентами управлять? я запихнул в ваш последний скрипт функцию отправки сообщения клиенту, оправляет но только тму кто последний зашел =)

Старый 16.01.2010, 02:05
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 12  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
"xml" ничем от "текста" не отличается, это собственно, тот же текст, только хитро размеченный, так, что его могут парсить разные парсеры (каламбурчик, однако) и вынимать полезную инфу. Во флэше парсит класс XML, в с++ своих парсеров тоже хватает. ПРосто xml удобен, потому популярен. Но это не значит, что xml - панацея.
Цитата:
в с++ 2 переменные Name и Sername
и их надо передат во flash так чтоб они были там переменными а не просто текстом
переменные вы объявляете во флэше, это вроде обычное дело, нет? А вот то, что им присвоить, вы примете от сервера.
Цитата:
можно по 1 переменной передавать в скрытое текстовое поле и по очереди присваивать перменной значение этого поля =) Просто может есть способ попроще?
Есть.
Цитата:
А можно как-то клиентами управлять? я запихнул в ваш последний скрипт функцию отправки сообщения клиенту, оправляет но только тму кто последний зашел
Пример отправляет любому клиенту его же последнее сообщение по принципу эха и все. Хотите передавать сообщения от клиента клиенту? Ну так организуйте более сложную процедуру обработки сообщений. Мне оно не надо .


Последний раз редактировалось alexcon314; 16.01.2010 в 02:09.
Старый 16.01.2010, 02:21
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 13  
Ответить с цитированием
stinkybob

Регистрация: Jan 2010
Сообщений: 41
Спасибо за ответы многое понял, но вот все таки хочется узнать направление

отправлять клиентам (управлять ими) это к чему надо пристать?

Код:
		Client = accept(Sock, (sockaddr*)&sin, 0); // Ожидание клиента
		recv(Client, ClientName, 30, 0); // Получение имени компьютера клиента
		send(Client, PCName, strlen(PCName) + 1, 0); // Отправка имени этого компьютера (сервера)
где-то тут если я не ошибаюсь? =)))

но это то да лажно разберусь =)

вот только глушь осталась в
Цитата:
"...способ попроще?"
поясните?

Старый 16.01.2010, 02:32
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 14  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Передаете с сервера набор переменных.
Скажем, строка "1.2.3.4.5".
в onData во флэше делаете примерно так
Код:
var arr = msg.split(".");// это элементарнейший парсинг элементарнейшей строки.
// рассовываете по флэшовым переменным данные из массива, типа
myVar1 = arr[1];
myVar2 = arr[2];
Почитайте еще про сериализацию/десериализацию данных.

Цитата:
..это к чему надо пристать
"это" надо писать на сервере, в обработчике сообщений от клиента. Мало того, сообщение должно быть на абы каким, а содержать команду, т.е. некий набор данных, которые ваш обработчик расценит как руководство к действию "передать то-то такому-то клиенту".


Последний раз редактировалось alexcon314; 16.01.2010 в 02:39.
Старый 16.01.2010, 02:34
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 15  
Ответить с цитированием
stinkybob

Регистрация: Jan 2010
Сообщений: 41
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
Передаете с сервера набор переменных.
Скажем, строка "1.2.3.4.5".
в onData во флэше делаете примерно так
Код:
var arr = msg.split(".");// это элементарнейший парсинг элементарнейшей строки.
// рассовываете по флэшовым переменным данные из массива, типа
myVar1 = arr[1];
myVar2 = arr[2];
Почитайте еще про сериализацию/десериализацию данных.

Низкий поклон

=======================================================================

Подскажи пожалуйста как из этого клиента можно отправить Policy file

много чего читал пробывал и т.п. но ничего не помогло

Добавлено через 48 часов 18 минут
Все.. разобрался

клиент на флеше:

Код AS1/AS2:
Security.allowDomain("localhost");
Security.loadPolicyFile("xmlsocket://localhost:1000");
 
var socket:XMLSocket = new XMLSocket();
socket.onConnect = function(success:Boolean) {
	if (success) {
		o("Connection succeeded!");
		socket.send("Boss");
	} else {
		o("Connection failed!");
	}
};
if (!socket.connect("localhost", 1000)) {
 
ну и так далее....
код на с++

сразу после соединения

Код:
    char xml[500]="<?xml version='1.0'?> <!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'> <cross-domain-policy> <allow-access-from domain='*' to-ports='1000' /> </cross-domain-policy>";

send(Client, xml, strlen(xml) + 1, 0);


Последний раз редактировалось stinkybob; 17.01.2010 в 23:13.
Старый 03.08.2010, 14:59
ZeB вне форума Посмотреть профиль Отправить личное сообщение для ZeB Найти все сообщения от ZeB
  № 16  
Ответить с цитированием
ZeB

Регистрация: Aug 2010
Сообщений: 2
То ли политика безопасности поменялась, то ли я делаю что-то не так.

К кнопке отправки данных из формы прикреплен следующий код. ( на адресацию внимания не обращайте, потом всё будет более цивильно)))
Код AS1/AS2:
on (release)
{
	System.security.allowDomain("192.168.136.240");
	System.security.loadPolicyFile("xmlsocket://192.168.136.240:11533");
	var slogin:String = _root.login_obj.txt_login.text;
	var spassword:String = _root.login_obj.txt_password.text;
	var socket:XMLSocket = new XMLSocket();
	socket.connect("192.168.136.240",11533);
	socket.onConnect = function(success:Boolean) {
		if (success) {
 
			socket.send("<lg>"+slogin);
			socket.send("<ps>"+spassword);
		} else {
			trace("Connection failed!");
		}
	};
}
Сервер содержит следующий код на Си.

Код:
Client = accept(Sock, (sockaddr*)&sin, 0); // Ожидание клиента
	char xml[500]="<?xml version='1.0'?> <!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'> <cross-domain-policy> <allow-access-from domain='*' to-ports='11533' /> </cross-domain-policy>";
	send(Client, xml, strlen(xml) + 1, 0);
	recv(Client, Message, 200, 0); // Получение логина
	printf("%s",Message);

	recv(Client, Message, 200, 0); // Получение пароля
	printf("%s",Message);
Что только не пробовал - на сервер вместо данных идут запросы файла безопасности. Подозреваю дело в плеере, так как, если использовать "exe-флешку" ( Macromedia Flash Proffesional 8 , следовательно 8ой плеер ), то данные идут так как надо.

Подскажите пожалуйста в каком направлении копать.

Старый 03.08.2010, 15:44
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 17  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Что-то не ясно.. вы при клике по кнопке пытаетесь грузить полиси, потом создаете новый сокет, коннектитесь .. и так при каждом клике что ли?
Ну так оно и не удивительно, что при каждом клике флэш, создавая заново коннект, просит каждый раз полиси.
А то что в ехе работает, то там механизм соединения несколько иной, насколько мне помнится, ибо требования к безопасности иные.
Код:
System.security.allowDomain("192.168.136.240");
это я вообще впервые вижу, чтобы домен идентифицировался как ip. Разве так можно?
Зачем мудрить? Посмотрите эту тему, наверняка в поиске еще что-то найдется, примеры вполне пригодные для понимания и воспроизведения у себя.

Старый 03.08.2010, 15:54
ZeB вне форума Посмотреть профиль Отправить личное сообщение для ZeB Найти все сообщения от ZeB
  № 18  
Ответить с цитированием
ZeB

Регистрация: Aug 2010
Сообщений: 2
Пробовал как в 15 посте. Не сработало.
Да, с ИП я перемудрил. Но с доменом тоже не работает.
Кликается кнопка один раз, соединение с сервером происходит единожды.


Последний раз редактировалось ZeB; 03.08.2010 в 15:56.
Старый 03.08.2010, 16:04
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 19  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
http://www.flasher.ru/forum/showthread.php?t=135168

Старый 26.08.2010, 00:47
Dimrix вне форума Посмотреть профиль Отправить личное сообщение для Dimrix Найти все сообщения от Dimrix
  № 20  
Ответить с цитированием
Dimrix

Регистрация: Aug 2010
Сообщений: 9
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
Ну, как подконнектить... так вот, примерно:
Код:
// AS 2.0 socket client code
var socket:XMLSocket = new XMLSocket();
socket.onConnect = function(success:Boolean) {
	if (success) {
		o("Connection succeeded!");
		socket.send("ogogo");
	} else {
		o("Connection failed!");
	}
};
if (!socket.connect("127.0.0.1", 2803)) {
	o("Connection failed!");
}
socket.onClose = function(){
	o("Connection closed.");
}
socket.onData = function(src) {
	o(src);
};
sendBtn.onRelease = function() {
	socket.send(toSend.text);
};
function o(msg) {
	out.text = msg + newline + out.text;
}
В AS 3.0 можно юзать класс Socket.
Взял сервачёк написаный на си и попытался привязать твой скрипт. Флешу удаётся законектится, и даже отправить сообщение, которое сервак успешно принимает. Но вот сприёмом данных у клиента фигня - как-будто сервер молчит, хотя проверял как локально так и посети телнетом заходить на порт сервака - он на команды мне отвечает. А флеш не видет ответов :-( Может подскажешь чего не так?

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.