|
|
|||||
Регистрация: Oct 2012
Сообщений: 10
|
Delphi Server + Flash Client
Всем привет!!!
У меня такая проблема: Я создаю сокет сервер через TServerSocket на Delphi 7 и клиент на Флеше, используя XMLSocket. Тк вот, вроде все работает как набо: сначала к серваку приходит сообщение <policy-file-request/> и сервер отпрвляет файл политики. Клиент переподключается. А вот дальше непонятно: почему из Флеш-клиента могу отпралять сообщения, сервак их принимает, а вот когда сервер отправляет - то флеш уже не принимает =( Получается, что сервер отправляет файл политики, а затем отказывается что-либо отправлять.. Вот такая печальная история. Помогите пожалуйста решить проблему!!!!! Проверяю на локальном компе без использования хостинга (ни локального, ни нелокального) Код флеш: 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. Мемо2 - окно сообщений Мемо3 - написать сообщение Буттон1 - включить сокет Буттон3 - отправить |
|
|||||
Регистрация: Oct 2012
Сообщений: 10
|
Вау! Реально из-за этого не работало!!!
Спасибо большое!!! =))))) А блин сколько голову ломал =) Тема закрыта. |
|
|||||
Давно хотел спросить.
Цитата:
Нормальным языком может кто объяснить, что они хотели сказать? Нужен ли файл политики безопасности для общения AIR приложения и удаленного сервера?
__________________
In Code We Trust |
Часовой пояс GMT +4, время: 02:29. |
|
« Предыдущая тема | Следующая тема » |
|
|