![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Всем привет!!!
У меня такая проблема: Я создаю сокет сервер через 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 - отправить |
![]() |
Часовой пояс GMT +4, время: 19:06. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|