Hallo!
Ich kämpfe gerade mit Sockets bei Flex. Ich benutze die Socket Klasse und stelle eine Verbindung zum localhost her. Er zeigt mir auch an, dass die Verbindung gelungen ist, aber socket sendet und empfängt anscheinend nichts. Mit telnet geht das wunderbar, das server script funktioniert somit, bloss flex zickt rum. Hier mal etwas code:
die crossdomain.xml
nun die Ausprägung der Socket klasse:
und die socket klasse selber:
Hat jmd nen tipp, warum telnet mit dem server wunderbar t aber flex eine verbindung zwar aufbaut, aber keine daten sendet und empfängt? Hauptsächlich keine daten versendet?
Gruß
Thorsten
EDIT: während die flex anwendung läuft, sendet die anwendung nichts. schließe ich dann diese, schickt es auf einmal alles ab. warum sendet flex die daten zum server erst, wenn man die flex anwendung schließt?
Ich kämpfe gerade mit Sockets bei Flex. Ich benutze die Socket Klasse und stelle eine Verbindung zum localhost her. Er zeigt mir auch an, dass die Verbindung gelungen ist, aber socket sendet und empfängt anscheinend nichts. Mit telnet geht das wunderbar, das server script funktioniert somit, bloss flex zickt rum. Hier mal etwas code:
die crossdomain.xml
Code:
<cross-domain-policy>
<allow-access-from domain="localhost" to-ports="8080"/>
</cross-domain-policy>
nun die Ausprägung der Socket klasse:
Code:
Security.allowDomain("localhost");
Security.loadPolicyFile("xmlsocket://localhost/crossdomain.xml");
this.network = new MySocket();
this.network.connect("localhost",8080);
und die socket klasse selber:
Code:
package blsbls
{
import flash.errors.IOError;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.TimerEvent;
import flash.net.Socket;
import flash.net.XMLSocket;
import flash.utils.Timer;
import mx.controls.Alert;
public class MySocket
{
private var socket:Socket;
private var timer:Timer;
public function MySocket()
{
this.socket = new Socket();
this.socket.addEventListener(Event.CONNECT, onConnected);
this.socket.addEventListener(Event.CLOSE, onClose);
this.socket.addEventListener(DataEvent.DATA, onReceive);
this.socket.addEventListener(IOErrorEvent.IO_ERROR, onError);
this.socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, OnSecurityError);
timer = new Timer(10);
timer.addEventListener(TimerEvent.TIMER, onRead);
}
public function connect(host:String, port:int):void {
try {
if(this.socket.connected)
this.socket.close();
this.socket.connect(host,port);
} catch(e:Error) {
Alert.show(e.message);
}
}
private function onConnected(event:Event):void {
Alert.show("Connected");
this.timer.start();
//this.socket.send("hallo server");
//this.socket.;
//this.socket.flush();
//this.send("##hi server##");
}
private function onClose(event:Event):void {
Alert.show("Closed");
}
private function onError(event:IOErrorEvent):void {
Alert.show(event.text);
}
private function OnSecurityError(event:SecurityErrorEvent):void {
Alert.show(event.text);
}
private function onReceive(event:DataEvent):void {
Alert.show(event.text);
}
public function send(obj:String):void {
try {
this.socket.writeUTFBytes(obj);
this.socket.flush();
//this.socket.send(obj);
}
catch(e:IOError) {
Alert.show(e.message);
}
}
private function onRead(event:TimerEvent):void {
var str:String = this.socket.readUTFBytes(this.socket.bytesAvailable);
if(str.length > 0)
Alert.show(str);
}
}
}
Hat jmd nen tipp, warum telnet mit dem server wunderbar t aber flex eine verbindung zwar aufbaut, aber keine daten sendet und empfängt? Hauptsächlich keine daten versendet?
Gruß
Thorsten
EDIT: während die flex anwendung läuft, sendet die anwendung nichts. schließe ich dann diese, schickt es auf einmal alles ab. warum sendet flex die daten zum server erst, wenn man die flex anwendung schließt?
Zuletzt bearbeitet: