Flash/Flex unterstützt auch Socket-basierte Netzwerkverbindungen und die Serverseite kann in jeder Sprache wie C++, VB, C#, Java usw. entwickelt werden. Indem Sie einen Netzwerkport abhören, können Sie Verbindungen von Clients empfangen, die von Flash/Flex entwickelt wurden.
ActionScript 3.0 ermöglicht die Kommunikation mit dem Server über eine Socket-Verbindung. Dies ist ein wichtiges Merkmal, das über die traditionelle B/S-Struktur hinausgeht. Dies ermöglicht eine sofortige Verbindung der Netzwerkkommunikation und vermeidet die Nachteile zustandsloser Verbindungen im HTTP-Protokoll. ActionScript 3.0 verwendet die XMLSocket-Klasse für die Verbindung. Es ist zu beachten, dass bei Verwendung der XMLSocket-Klasse für die Socket-Verbindung diese nicht automatisch die Firewall passieren kann. Um eine Verbindung über die Firewall herzustellen, müssen Sie das RTMP-Protokoll verwenden, das auf dem HTTP-Protokoll basiert.
In der von Adobe bereitgestellten API-Dokumentation erfahren Sie, dass XMLSocket vier öffentliche Methoden bereitstellt:
1. XMLSocket(host:String=null,port:int=0)--Create Ein neues XMLSocket-Objekt.
2. close():void – Einen XMLSocket schließen.
3. connect(host:String,port:int):void – Verbindung zum angegebenen TCP-Port herstellen.
4. send(object:*):void – Daten an den Verbindungsserver senden.
OK, nachdem wir diese verstanden haben, können wir XMLSocket verwenden, um Socket-basierte Netzwerk-Echtzeit-Kommunikationsanwendungen zu entwickeln. Im Folgenden wird ein Socket-Server über C# bereitgestellt und Port 8888 überwacht. Das Beispielprogramm lautet wie folgt:
1usingSystem;
2usingSystem.Collections.Generic;
3usingSystem.Linq;
4usingSystem.Text;
5usingSystem .Net. Sockets;
6usingSystem.IO;
7
8namespaceFlashFlexDotNet
9{
10classProgram
11{
12staticvoidMain(string[]args)
13{
14TcpListenerlistener ;
15
16try
17{
18listener=newTcpListener(8888);
19}
20catch(Exceptionex)
21{
22Console.WriteLine (z. B. Nachricht);
23return;
24}
25
26listener.Start();
27Console.WriteLine("Server startet, wartet auf Client-Verbindung.");
28boolloop= true;
29
30while(loop)
31{
32Sockets=listener.AcceptSocket();
33NetworkStreamns=newNetworkStream(s);
34StreamReaderreader=newStreamReader(ns );
35stringresult=string.Empty;
36try
37{
38result=reader.ReadLine();
39Console.WriteLine(result);
40}
41catch (Exceptionex)
42{
43Console.WriteLine(ex.Message);
44}
45}
46}
47}
48}
49
Der serverseitige Socket wurde vorbereitet. Schauen wir uns an, wie der XMLSocket des ActionScript des Clients eine Socket-Verbindung aufbaut, um mit dem .net-Socket-Server zu kommunizieren.
Wie weiter oben in diesem Artikel vorgestellt, stellt ActionScript 3.0 die Socket-basierte Netzwerkverbindungsklasse XMLSocket bereit, die wir direkt zur Entwicklung der Socket-basierten Netzwerkkommunikation verwenden können. Stellen Sie wie folgt eine Netzwerkverbindung basierend auf dem von ActionScript 3.0 bereitgestellten XMLSocket her:
1privatefunctionconnectionServer():void
2{
3xmlConn=newXMLSocket();
4xmlConn.connect("127.0.0.1",8888);
5}
Anschließend können Sie über die XMLSocket-Instanzmethode send() eine Nachricht an den Socket-Server senden. Die folgende Codedefinition:
1privatefunctiononSend():void
2{
3xmlConn.send(txtData.text+"n");
4}
Vollständiger Kundencode:
1
2
4backgroundGradientColors="[#CDCAE6,#FFFFFF]">
5
67importmx.controls.Alert;
8
9privatevarxmlConn:XMLSocket;
10
11privatefunctionconnectionServer():void
12{
13xmlConn=newXMLSocket( );
14xmlConn.connect("127.0.0.1",8888);
15}
16
17privatefunctiononSend():void
18{
19xmlConn.send(txtData.text+ "n");
20}
21]]>
22
23
24
25
26