Ağ iletişimi ve iletişim temelleri
Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü
Flash Player veya AIR’de uygulamalar oluştururken, çoğunlukla uygulamanızın dışındaki kaynaklara erişme ihtiyacı duyarsınız. Örneğin, bir görüntü için İnternet web sunucusuna talep gönderebilir ve karşılığında görüntü verilerini alabilirsiniz. Ya da bir uygulama sunucusuyla bağlantısı bulunan priz bağlantısı üzerinden ileri-geri seri nesneler gönderebilirsiniz. Flash Player ve AIR API’leri, uygulamanızın bu alışverişe katılmasına izin veren birçok sınıf sağlar. Bu API’ler UDP, TCP, HTTP, RTMP ve RTMFP gibi iletişim kuralları için IP tabanlı ağ kurmayı destekler.
Bir ağ boyunca veri gönderip almak için aşağıdaki sınıflar kullanılabilir:
Sınıf
|
Desteklenen veri biçimleri
|
İletişim kuralları
|
Açıklama
|
Loader
|
SWF, PNG, JPEG, GIF
|
HTTP, HTTPS
|
Desteklenen veri türlerini yükler ve verileri bir görüntüleme nesnesine dönüştürür.
Bkz.
Görüntüleme içeriğini dinamik olarak yükleme
.
|
URLLoader
|
Herhangi biri (metin, XML, ikili, vs.)
|
HTTP, HTTPS
|
Gelişigüzel veri biçimleri yükler. Uygulamanız verileri yorumlamaktan sorumludur.
Bkz.
URLLoader sınıfını kullanma
|
FileReference
|
Herhangi bir
|
HTTP
|
Dosyaları yükler ve indirir.
Bkz.
FileReference sınıfını kullanma
|
NetConnection
|
Video, ses, ActionScript Mesaj Biçimi (AMF)
|
HTTP, HTTPS, RTMP, RTMFP
|
Video, ses ve uzak nesne akışlarına bağlanır.
Bkz.
Videoyla çalışma
.
|
Ses
|
Ses
|
HTTP
|
Desteklenen ses biçimlerini yükler ve oynatır.
Bkz.
Harici ses dosyalarını yükleme
.
|
XMLSocket
|
XML
|
TCP
|
XMLSocket sunucusuyla XML mesajı alışverişi yapar.
Bkz.
XML soketleri
.
|
Socket
|
Herhangi bir
|
TCP
|
Bir TCP soket sunucusuna bağlanır.
Bkz.
İkili istemci soketleri
.
|
SecureSocket
(AIR)
|
Herhangi bir
|
SSLv3 veya TLSv1’e sahip TCP
|
SSL veya TLS güvenliği gerektiren bir TCP soket sunucusuna bağlanır.
Bkz.
Güvenli istemci soketleri (AIR)
.
|
ServerSocket
(AIR)
|
Herhangi bir
|
TCP
|
Gelen TCP soket bağlantıları için sunucu olarak hareket eder.
Bkz.
Sunucu soketleri
.
|
DatagramSocket
(AIR)
|
Herhangi bir
|
UDP
|
UDP paketleri gönderip alır.
Bkz.
UDP soketleri (AIR)
|
Çoğu zaman, bir web uygulaması oluştururken kullanıcının uygulama durumu hakkında kalıcı bilgiler depolamak faydalıdır. HTML sayfaları ve uygulamaları bu amaçla tipik olarak çerezler kullanır. Flash Player’da, aynı amaç için SharedObject sınıfını kullanabilirsiniz. Bkz.
Paylaşılan nesneler
. (SharedObject sınıfı AIR uygulamalarında kullanılabilir, ancak düzenli bir dosyaya sadece veri kaydederken daha az sınırlama mevcuttur.)
Flash Player veya AIR uygulamasının aynı bilgisayardaki başka bir Flash Player veya AIR uygulamasıyla iletişim kurması gerekirse, LocalConnection sınıfını kullanabilirsiniz. Örneğin, aynı web sayfasındaki iki (veya daha fazla) SWF, birbiriyle iletişim kurabilir. Benzer şekilde, bir web sayfasında çalışan SWF bir AIR uygulamasıyla iletişim kurabilir. Bkz.
Diğer Flash Player ve AIR örneklerine bağlanma
.
Yerel bilgisayardaki SWF dışı diğer işlemlerle iletişim kurmanız gerektiğinde, AIR 2’ye eklenen NativeProcess sınıfını kullanın. NativeProcess sınıfı AIR uygulamanızın başlamasına ve diğer uygulamalarla iletişim kurmasına imkan verir. Bkz.
AIR uygulamasında yerel işlemlere bağlanma
AIR uygulamasının çalışmakta olduğu bilgisayarın ağ ortamı hakkında bilgiye ihtiyaç duyduğunuzda, aşağıdaki sınıfları kullanabilirsiniz:
-
NetworkInfo—Kullanılabilir ağ arabirimleri hakkında bilgisayarın IP adresi gibi bilgiler sağlar. Bkz.
Ağ arabirimleri
.
-
DNSResolver—DNS kayıtlarına bakmanıza imkan verir. Bkz.
DNS (Alan Adı Sistemi) kayıtları
.
-
ServiceMonitor—Bir sunucunun kullanılabilirliğini izlemenize imkan verir. Bkz.
Hizmet izleme
.
-
URLMonitor—Bir kaynağın belli bir URL’deki kullanılabilirliğini izlemenize imkan verir. Bkz.
HTTP izleme
.
-
SocketMonitor ve SecureSocketMonitor—Bir kaynağın bir soketteki kullanılabilirliğini izlemenize imkan verir. Bkz.
Soket izleme
.
Önemli kavramlar ve terimler
Aşağıdaki başvuru listesi ağ ve iletişim kodu programlarken karşılaşacağınız önemli terimleri içerir.
-
Harici veriler
-
Uygulamanın dışında belirli bir şekilde saklanan ve gerektiğinde uygulamaya yüklenen veriler. Bu veriler, doğrudan yüklenen bir dosyada saklanabildiği gibi, bir sunucuda çalıştırılan komut dosyaları veya programların çağrılmasıyla alınan bir veritabanında ya da başka bir formda saklanabilir.
-
URL olarak kodlanmış değişkenler
-
URL olarak kodlanmış biçim, çeşitli değişkenleri (değişken ad ve değer çiftleri) tek bir metin dizesi halinde temsil etmenin bir yolunu sunar. Ayrı ayrı değişkenler name=value biçiminde yazılır. Her değişken (her ad-değer çifti) ampersan karakteri tarafından şu şekilde ayrılır: variable1=value1&variable2=value2. Bu şekilde, sonsuz sayıda değişken tek bir mesaj olarak gönderilebilir.
-
MIME türü
-
Belirli bir İnternet iletişimi dosyasının türünü tanımlamak için kullanılan standart bir kod. Her dosya, kendisini tanımlamak için kullanılan belirli bir kod içerir. Dosya veya mesaj gönderilirken, bilgisayar (örn. web sunucusu veya kullanıcının Flash Player ya da AIR örneği) gönderilen dosya türünü belirtir.
-
HTTP
-
Köprü Metni Aktarım Protokolü—web sayfalarını ve Internet üzerinden gönderilen diğer çeşitli içerik türlerini dağıtmak için standart biçim.
-
İstek yöntemi
-
Bir uygulama (bir AIR uygulaması veya bir web tarayıcısı gibi) web sunucusuna mesaj (HTTP isteği adı verilir) gönderdiğinde, gönderilen tüm veriler iki yöntemden biri kullanılarak isteğe gömülebilir; bunlar GET ve POST olmak üzere iki istek yöntemidir. Sunucu ucunda, isteği alan programın verileri bulmak için isteğin ilgili bölümüne bakması gerekir, bu nedenle uygulamanızdan veri göndermek için kullanılan istek yönteminin, sunucuda o veriyi okumak için kullanılan istek yöntemiyle eşleşmesi gerekir.
-
Soket bağlantısı
-
İki bilgisayar arasındaki iletişim için kalıcı bir bağlantı.
-
Karşıya yükleme
-
Başka bir bilgisayara dosya gönderme.
-
İndirme
-
Başka bir bilgisayardan dosya alma.
Ağ arabirimleri
NetworkInfo nesnesini uygulamanızda kullanabileceğiniz mevcut donanım ve yazılım ağlarını keşfetmek için kullanabilirsiniz. NetworkInfo nesnesi bir
singleton
nesnesidir. Bu nedenle bir tane oluşturmanıza gerek yoktur. NetworkInfo nesnesine ulaşmak için
onun yerine networkInfo
statik sınıf özelliğini kullanın. NetworkInfo nesnesi
ayrıca, kullanılabilir arabirimlerden biri değiştiğinde networkChange
olayı gönderir.
NetworkInterface nesnelerinin listesi için
findInterfaces()
yöntemini çağırın. Listedeki her Each NetworkInterface nesnesi kullanılabilir arabirimlerden birini tanımlar. NetworkInterface nesnesi IP adresi, donanım adresi, maksimum iletim birimi ve arabirimin etkin olup olmadığıyla ilgili bilgiler sağlar.
Aşağıdaki kod örneği, istemci bilgisayarın her arabiriminin NetworkInterface özelliklerini izler:
package {
import flash.display.Sprite;
import flash.net.InterfaceAddress;
import flash.net.NetworkInfo;
import flash.net.NetworkInterface;
public class NetworkInformationExample extends Sprite
{
public function NetworkInformationExample()
{
var networkInfo:NetworkInfo = NetworkInfo.networkInfo;
var interfaces:Vector.<NetworkInterface> = networkInfo.findInterfaces();
if( interfaces != null )
{
trace( "Interface count: " + interfaces.length );
for each ( var interfaceObj:NetworkInterface in interfaces )
{
trace( "\nname: " + interfaceObj.name );
trace( "display name: " + interfaceObj.displayName );
trace( "mtu: " + interfaceObj.mtu );
trace( "active?: " + interfaceObj.active );
trace( "parent interface: " + interfaceObj.parent );
trace( "hardware address: " + interfaceObj.hardwareAddress );
if( interfaceObj.subInterfaces != null )
{
trace( "# subinterfaces: " + interfaceObj.subInterfaces.length );
}
trace("# addresses: " + interfaceObj.addresses.length );
for each ( var address:InterfaceAddress in interfaceObj.addresses )
{
trace( " type: " + address.ipVersion );
trace( " address: " + address.address );
trace( " broadcast: " + address.broadcast );
trace( " prefix length: " + address.prefixLength );
}
}
}
}
}
}
Daha fazla bilgi için bkz.:
Ağ bağlanabilirliği değişimleri
AIR uygulamanız, güvenli olmayan ve değişken ağ bağlantıları içeren ortamlarda çalışabilir. Adobe AIR, bir uygulamanın çevrimiçi kaynaklara yönelik bağlantıları yönetmesine yardımcı olmak için, ağ bağlantısının her kullanılabilir veya kullanılamaz oluşunda bir ağ değişikliği olayı gönderir. Hem NetworkInfo nesnesi hem de uygulamanın NativeApplication nesnesi,
networkChange
olayını gönderir. Bu olaya tepki vermek için bir dinleyici ekleyin:
NetworkInfo.networkInfo.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);
Ve bir olay işleyici işlevi tanımlayın:
function onNetworkChange(event:Event)
{
//Check resource availability
}
networkChange
olayı, tüm ağ etkinliğinde gerçekleşen bir değişikliği değil, yalnızca bir ağ bağlantısının değiştiğini gösterir. AIR, ağ değişikliğinin anlamını yorumlamaya çalışmaz. Ağa bağlı bir bilgisayar birçok gerçek ve sanal bağlantıya sahip olabilir. Bu nedenle bir bağlantının kaybedilmesi, kaynağın kaybedilmesi anlamına gelmeyebilir. Diğer yandan, yeni bağlantılar da iyileştirilmiş kaynak kullanılabilirliğini garanti etmez. Bazen yeni bir bağlantı, önceden kullanılabilir olan bir kaynağa erişimi bloke bile edebilir (örneğin VPN'e bağlanıldığında).
Genellikle, bir uygulamanın uzak bir kaynağa bağlanıp bağlanamayacağını belirlemenin tek yolu, denemektir. Hizmet izleme çerçevesi, ağ bağlanabilirliğindeki değişikliklere yanıt vermek için belirli bir ana bilgisayara olay bazlı araçlar sağlar.
Not:
Servis izleme çerçevesi, sunucunun bir isteği kabul edilebilir biçimde yanıtlayıp yanıtlamadığını saptar. Başarılı bir denetim, tam bağlanabilirliği garanti etmez. Ölçeklenebilir web servisleri, trafiği bir dizi web sunucusuna yönlendirmek için genellikle önbelleğe alma ve yük dengeleme gereçlerini kullanır. Bu durumda, servis sağlayıcıları ağ bağlantısına ilişkin yalnızca kısmi bir tanı sağlar.
Hizmet izleme
Servis izleme çerçevesi, AIR çerçevesinden ayrı olarak aircore.swc dosyasında bulunur. Çerçeveyi kullanmak için, aircore.swc dosyası, inşa etme işlemine dahil edilmelidir.
Adobe® Flash® Builder bunu otomatik olarak dahil eder.
ServiceMonitor sınıfı, ağ servislerinin izlenmesi için çerçeveyi uygular ve servis izlemeleri için temel işlevler sağlar. Varsayılan olarak, bir ServiceMonitor sınıfı örneği, ağ bağlantısına ilişkin olaylar gönderir. ServiceMonitor nesnesi bu olayları, örnek oluşturulduğunda ve çalışma zamanının bir ağ değişimi algıladığı zamanlarda gönderir. Ayrıca, genel ağ bağlantısı olaylarına bakılmaksızın milisaniye cinsinden belirli bir aralıkta bağlantıyı kontrol etmek için ServiceMonitor örneğinin
pollInterval
özelliğini ayarlayabilirsiniz. ServiceMonitor nesnesi,
start()
yöntemi çağrılana kadar ağ bağlantısını kontrol etmez.
ServiceMonitor sınıfının alt sınıfı olan URLMonitor sınıfı, belirli bir URLRequest için HTTP bağlantısındaki değişiklikleri saptar.
ServiceMonitor sınıfının başka bir alt sınıfı olan SocketMonitor sınıfı ise, belirli bir bağlantı noktasındaki belirli bir ana bilgisayara ilişkin bağlantıdaki değişiklikleri saptar.
Not:
AIR 2'den önce, servis izleme çerçevesi servicemonitor.swc kütüphanesinde yayınlanıyordu. Bu kütüphane artık çıkartılmıştır. Onun yerine aircore.swc kütüphanesini kullanın.
Flash CS4 ve CS5 Professional
Bu sınıfları Adobe® Flash® CS4 veya CS5 Professional'da kullanmak için:
-
File > Yayınlama ayarları komutunu seçin.
-
ActionScript 3.0 için Ayarlar düğmesini tıklatın. Kütüphane Yolu'nu seçin.
-
SWC'ye Gözat'ı tıklatın ve Flash Professional yükleme klasöründeki AIK klasörüne göz atın.
-
Bu klasörde, /frameworks/libs/air/aircore.swc (AIR 2 için) veya /frameworks/libs/air/servicemonitor.swc (AIR 1.5 için) öğesini bulun.
-
Tamam düğmesini tıklatın.
-
Aşağıdaki içe aktarma ifadesini ActionScript 3.0 kodunuza ekleyin:
import air.net.*;
Flash CS3 Professional
Adobe® Flash® CS3 Professional'da bu sınıfları kullanmak için ServiceMonitorShim bileşenini Bileşenler panelinden Kütüphane öğesine sürükleyin ve daha sonra aşağıdaki
import
ifadesini ActionScript 3.0 kodunuza ekleyin:
import air.net.*;
HTTP izleme
URLMonitor sınıfı, bağlantı noktası 80'de (HTTP iletişimi için tipik bağlantı noktası) belirli bir adrese HTTP isteklerinin yapılıp yapılamayacağını belirler. Aşağıdaki kod, Adobe web sitesindeki bağlantı değişikliklerini saptamak için bir URLMonitor sınıfı örneğini kullanır:
import air.net.URLMonitor;
import flash.net.URLRequest;
import flash.events.StatusEvent;
var monitor:URLMonitor;
monitor = new URLMonitor(new URLRequest('http://www.example.com'));
monitor.addEventListener(StatusEvent.STATUS, announceStatus);
monitor.start();
function announceStatus(e:StatusEvent):void {
trace("Status change. Current status: " + monitor.available);
}
Soket izleme
AIR uygulamaları, itme modeli bağlanabilirliği için soket bağlantıları da kullanabilir. Güvenlik duvarları ve ağ yönlendiricileri, güvenlik nedenleriyle genellikle yetkisiz bağlantı noktalarındaki ağ iletişimini kısıtlar. Bu nedenle geliştiriciler, kullanıcıların soket bağlantıları kuramayabileceğini göz önünde bulundurmalıdır.
Aşağıdaki kod, Adobe web sitesindeki bağlantı değişikliklerini saptamak için bir URLMonitor sınıfı örneğini kullanır. İzlenen bağlantı noktası, IRC'de yaygın bir bağlantı noktası olan 6667'dir:
import air.net.ServiceMonitor;
import flash.events.StatusEvent;
socketMonitor = new SocketMonitor('www.example.com',6667);
socketMonitor.addEventListener(StatusEvent.STATUS, socketStatusChange);
socketMonitor.start();
function announceStatus(e:StatusEvent):void {
trace("Status change. Current status: " + socketMonitor.available);
}
Soket sunucusu güvenli bir bağlantı gerektiriyorsa, SocketMonitor yerine SecureSocketMonitor sınıfını kullanabilirsiniz.
DNS (Alan Adı Sistemi) kayıtları
DNSResolver sınıfını kullanarak DNS kaynak kayıtlarını arayabilirsiniz. DNS kaynak kayıtları alan adının IP adresi ve IP adresinin alan adı gibi bilgiler verir. Aşağıdaki türlerdeki DNS kaynak kayıtlarını arayabilirsiniz:
-
ARecord—Bir sunucunun IPv4 adresi
-
AAAARecord—Bir ana bilgisayarın IPv6 adresi
-
MXRecord (mail exchange record)—ana bilgisayarın mesaj alışverişi kaydı.
-
PTRRecord—bir IP adresinin internet sunucu adresi
-
SRVRecord—bir hizmetin hizmet kaydıdır.
Bir kayıt aramak için sorgulama dizesini kayıt türünü gösteren sınıf nesnesini DNSResolver nesnesinin
lookup()
yöntemine geçirin. Sorgulama dizesi kayıt türüne göre değişir:
Kayıt sınıfı
|
Sorgulama dizesi
|
Sorgulama dizesi örneği
|
ARecord
|
ana bilgisayar adı
|
“example.com”
|
AAAARecord
|
ana bilgisayar adı
|
“example.com”
|
MXRecord
|
ana bilgisayar adı
|
“example.com”
|
PTRRecord
|
IP adresi
|
“208.77.188.166”
|
SRVRecord
|
Service identifier: _service._protocol.host
|
“_sip._tcp.example.com”
|
Aşağıdaki kod örneği ana bilgisayarın “example.com” IP adresini arar.
package
{
import flash.display.Sprite;
import flash.events.DNSResolverEvent;
import flash.events.ErrorEvent;
import flash.net.dns.ARecord;
import flash.net.dns.DNSResolver;
public class DNSResolverExample extends Sprite
{
public function DNSResolverExample()
{
var resolver:DNSResolver = new DNSResolver();
resolver.addEventListener( DNSResolverEvent.LOOKUP, lookupComplete );
resolver.addEventListener( ErrorEvent.ERROR, lookupError );
resolver.lookup( "example.com.", ARecord );
}
private function lookupComplete( event:DNSResolverEvent ):void
{
trace( "Query string: " + event.host );
trace( "Record count: " + event.resourceRecords.length );
for each( var record:* in event.resourceRecords )
{
if( record is ARecord ) trace( record.address );
}
}
private function lookupError( error:ErrorEvent ):void
{
trace("Error: " + error.text );
}
}
}
Daha fazla bilgi için bkz.:
|
|
|
|
|