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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.12.2012, 20:06
BAZZOOKA вне форума Посмотреть профиль Отправить личное сообщение для BAZZOOKA Найти все сообщения от BAZZOOKA
  № 1  
Ответить с цитированием
BAZZOOKA

Регистрация: Oct 2012
Сообщений: 10
По умолчанию Delphi Server + Flash Client

Всем привет!!!
У меня такая проблема:
Я создаю сокет сервер через TServerSocket на Delphi 7 и клиент на Флеше, используя XMLSocket.

Тк вот, вроде все работает как набо: сначала к серваку приходит сообщение <policy-file-request/> и сервер отпрвляет файл политики. Клиент переподключается.

А вот дальше непонятно: почему из Флеш-клиента могу отпралять сообщения, сервак их принимает, а вот когда сервер отправляет - то флеш уже не принимает =(

Получается, что сервер отправляет файл политики, а затем отказывается что-либо отправлять..

Вот такая печальная история.
Помогите пожалуйста решить проблему!!!!!

Проверяю на локальном компе без использования хостинга (ни локального, ни нелокального)

Код флеш:
Код AS3:
import flash.net.XMLSocket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.DataEvent;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.system.Security;
import flash.events.SecurityErrorEvent;
 
 
 
var socket:XMLSocket = new XMLSocket();
Security.loadPolicyFile("192.168.1.1:1025");
socket.connect("192.168.1.1",1025);
 
	socket.addEventListener(Event.CONNECT, onConnects);
	socket.addEventListener(Event.CLOSE, onCloses);
	socket.addEventListener(IOErrorEvent.IO_ERROR, onErrors);
	socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSec);
	socket.addEventListener(DataEvent.DATA, onDatas);
 
function onSec(e:SecurityErrorEvent):void
{
	Pan.text = String(e.text);
}
 
 
function onConnects(e:Event):void
{
	Sys.text = 'Connected';
	socket.send('Hello adm'+'\n');	
}
 
 
 
function onErrors(e:IOErrorEvent):void
{
	Sys.text = String(e.text);
}
 
 
function onDatas(e:DataEvent):void
{
	var s:String = e.data;
	trace(s);
}
 
function onCloses(e:Event):void
{
	trace('Socket is disconnected');
}
 
Send.addEventListener(MouseEvent.CLICK, onSend);
function onSend(e:MouseEvent):void
{
	socket.send(Mes.text);
	Pan.appendText(Mes.text+"\n");
	Mes.text = '';
}
Код Делви сервака:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    ServerSocket1: TServerSocket;
    Memo2: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ServerSocket1Listen(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1Accept(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
    procedure ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:=1025;
Memo1.Lines.Insert(0,'Server Starting...');
ServerSocket1.open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Active:=false;
Memo1.lines.Insert(0,'Socket Stopped');
end;

procedure TForm1.ServerSocket1Listen(Sender: TObject;
  Socket: TCustomWinSocket);
begin
memo1.lines.insert(0,'listening on port '+inttostr(serversocket1.port));
end;

procedure TForm1.ServerSocket1Accept(Sender: TObject;
  Socket: TCustomWinSocket);
var s: String;
begin
s:='<?xml version="1.0"?>';
s:=s+'<cross-domain-policy>';
s:=s+'<allow-access-from domain="*" to-ports="*"/>';
s:=s+'</cross-domain-policy>'+#0;
s:= AnsiToUtf8(s);
ServerSocket1.Socket.Connections[0].SendText(s);
Memo1.Lines.Insert(0,'Client is accepted');
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Insert(0,'Client is connected '+Socket.RemoteAddress);

end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Insert(0,'Client is DISconnected');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo2.Lines.Insert(0,ServerSocket1.Socket.Connections[0].ReceiveText);
end;

procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
ServerSocket1.Socket.Connections[0].SendText(Memo3.Text);
Memo2.Lines.Insert(0,Memo3.Text);
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
Memo1.lines.insert(0,IntToStr(ErrorCode));
end;

end.
Где Мемо1 - это ЛОГ
Мемо2 - окно сообщений
Мемо3 - написать сообщение
Буттон1 - включить сокет
Буттон3 - отправить

Старый 10.12.2012, 20:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А сообщения отправляемые флеш клиенту подписаны нулевым байтом?

Старый 10.12.2012, 20:53
BAZZOOKA вне форума Посмотреть профиль Отправить личное сообщение для BAZZOOKA Найти все сообщения от BAZZOOKA
  № 3  
Ответить с цитированием
BAZZOOKA

Регистрация: Oct 2012
Сообщений: 10
Вау! Реально из-за этого не работало!!!
Спасибо большое!!! =)))))

А блин сколько голову ломал =)

Тема закрыта.

Старый 10.12.2012, 21:30
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 4  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Давно хотел спросить.

Цитата:
В AIR файл политики сокетов не является обязательным для содержимого, выполняемого в изолированной среде безопасности приложения. Файлы политик сокетов являются обязательными для любого подключения к сокету, устанавливаемого содержимым, выполняемым за пределами изолированной среды безопасности приложения AIR.
Отсюда

Нормальным языком может кто объяснить, что они хотели сказать? Нужен ли файл политики безопасности для общения AIR приложения и удаленного сервера?
__________________
In Code We Trust

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

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

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


 


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


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