Paket | flash.net |
Sınıf | public class DatagramSocket |
Miras Alma | DatagramSocket EventDispatcher Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
AIR profili desteği: Bu özellik tüm masaüstü işletim sistemlerinde, iOS'ta (AIR 3.8'den başlamak üzere) ve Android'te (AIR 3.8'den başlamak üzere) desteklenir. Bu özellik AIR for TV aygıtlarında desteklenmez. Desteği çalışma zamanında DatagramSocket.isSupported
özelliğini kullanarak test edebilirsiniz. Birden fazla profilde API desteği ile ilgili daha fazla bilgi için bkz. AIR Profil Desteği.
Datagram paketleri, kaynak ile hedef arasında tek tek iletilir. Paketler gönderildiği sıradan farklı bir sırada gelebilir. İletim sırasında kaybolan paketler yeniden iletilmez veya algılanmaz.
Datagram soketi kullanılarak gönderilen veriler, otomatik olarak iletilebilir boyutlarda paketlere bölünmez. Maksimum iletim birimi (MTU) boyutunu aşan bir UDP paketi gönderirseniz, ağ paketi atar (uyarmadan). Sınırlama MTU'su, iletim yolundaki herhangi bir arabirim, anahtar veya yönlendiricinin en küçük MTU'sudur. Yerel arabirimin MTU'sunu belirlemek için NetworkInterface sınıfını kullanabilirsiniz, ancak ağdaki diğer düğümlerin MTU değerleri farklı olabilir.
Socket sınıfı, garantili paket teslimi sağlayan ve büyük paketleri otomatik olarak bölüp yeniden birleştiren TCP kullanır. TCP ayrıca daha iyi ağ bant genişliği yönetimi de sağlar. Bu özellikler bir TCP soketinin kullanımının daha yüksek gecikme süresine neden olduğu ancak bir çok kullanıcı için TCP'nin faydalarının masraflara kıyasla çok daha ağır basması anlamına gelir. Çoğu ağ iletişimleri, DatagramSocket sınıfı yerine Socket sınıfını kullanmalıdır.
DatagramSocket sınıfı, küçük iletim gecikmelerinin önemli olduğu ve paket kaybının kabul edilmediği uygulamalarda çalışırken kullanışlıdır. Örneğin, IP üzerinden ses (VoIP) uygulamalarındaki ve gerçek zamanlı ağ işlemleri, çok oyunculu oyunlar genellikle UDP'den yararlanabilir. DatagramSocket sınıfı, bazı sunucu tarafındaki uygulamalar için de kullanışlıdır. UDP, durumsuz bir protokol olduğundan, bir sunucu TCP'ye göre daha fazla istemciden gelen daha fazla isteği işleyebilir.
DatagramSocket sınıfı yalnızca Adobe AIR uygulamalarında ve uygulama güvenlik sanal alanında kullanılabilir.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Daha fazla bilgi
İlgili API Öğeleri
Özellik | Tanımlayan: | ||
---|---|---|---|
bound : Boolean [salt okunur]
Bu soket nesnesinin geçerli olarak yerel bir adrese ve bağlantı noktasına bağlı olup olmadığını belirtir. | DatagramSocket | ||
connected : Boolean [salt okunur]
Bu soket nesnesinin geçerli olarak uzak bir adrese ve bağlantı noktasına bağlı olup olmadığını belirtir. | DatagramSocket | ||
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
isSupported : Boolean [statik] [salt okunur]
Çalışma zamanı ortamında DatagramSocket özelliklerinin desteklenip desteklenmediğini belirtir. | DatagramSocket | ||
localAddress : String [salt okunur]
Yerel makinede bu soketin bağlı olduğu IP adresi. | DatagramSocket | ||
localPort : int [salt okunur]
Yerel makinede bu soketin bağlı olduğu bağlantı noktası. | DatagramSocket | ||
remoteAddress : String [salt okunur]
Bu soketin bağlandığı uzak makinenin IP adresi. | DatagramSocket | ||
remotePort : int [salt okunur]
Bu soketin bağlandığı uzak makinenin bağlantı noktası. | DatagramSocket |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Bir DatagramSocket nesnesi oluşturur. | DatagramSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
EventDispatcher nesnesi olan bir olay dinleyici nesnesini, dinleyicinin bir olayın bildirimini alması için kaydeder. | EventDispatcher | ||
Bu soketi belirtilen yerel adrese ve bağlantı noktasına bağlar. | DatagramSocket | ||
Soketi kapatır. | DatagramSocket | ||
Soketi belirtilen bir uzak adrese ve bağlantı noktasına bağlar. | DatagramSocket | ||
Olay akışına bir olay gönderir. | EventDispatcher | ||
EventDispatcher nesnesinin belirli bir olay türü için kayıtlı dinleyicisi olup olmadığını kontrol eder. | EventDispatcher | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Bağlı IP adresinde ve bağlantı noktasında gelen paketleri almak için, bu DatagramSocket nesnesini etkinleştirir. | DatagramSocket | ||
EventDispatcher nesnesinden bir dinleyiciyi kaldırır. | EventDispatcher | ||
UDP kullanarak ByteArray öğesindeki baytları içeren paketi gönderir. | DatagramSocket | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object | ||
Bir olay dinleyicisinin bu EventDispatcher nesnesiyle mi, yoksa onun belirtilen olay türüne yönelik üst öğelerinden biriyle mi kayıtlı olduğunu kontrol eder. | EventDispatcher |
Olay | Özet | Tanımlayan: | ||
---|---|---|---|---|
[broadcast olayı] Flash Player veya AIR uygulaması işletim sistemi odağına gelip etkin olduğunda gönderilir. | EventDispatcher | |||
İşletim sistemi bu soketi kapattığında gönderilir. | DatagramSocket | |||
Bu soket bir veri paketi aldığında gönderilir. | DatagramSocket | |||
[broadcast olayı] Çalışan Flash Player veya AIR uygulaması sistem odağını kaybettiğinde ve etkin olmayan duruma geldiğinde gönderilir. | EventDispatcher | |||
Bu soket bir G/Ç hatası aldığında gönderilir. | DatagramSocket |
bound | özellik |
connected | özellik |
connected:Boolean
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bu soket nesnesinin geçerli olarak uzak bir adrese ve bağlantı noktasına bağlı olup olmadığını belirtir.
Not: true
değeri, uzak bir bilgisayarın bağlı adreste ve bağlantı noktasında dinlediği anlamına gelmez. Bu yalnızca bu DataGramSocket nesnesinin bu adrese ve bağlantı noktasına veri göndereceği ve yine yalnızca bu adresten ve bağlantı noktasından veri alacağı anlamına gelir.
Uygulama
public function get connected():Boolean
İlgili API Öğeleri
isSupported | özellik |
localAddress | özellik |
localPort | özellik |
remoteAddress | özellik |
remotePort | özellik |
DatagramSocket | () | Yapıcı |
public function DatagramSocket()
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bir DatagramSocket nesnesi oluşturur.
Atar
SecurityError — AIR uygulama güvenlik sanal alanı dışındaki içerik bir DatagramSocket nesnesi oluşturmaya çalışırsa.
|
bind | () | yöntem |
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bu soketi belirtilen yerel adrese ve bağlantı noktasına bağlar.
bind()
yöntemi eşzamanlı olarak çalıştırılır. Sonraki kod satırı çalıştırılmadan önce, bağlama işlemi tamamlanır.
Parametreler
localPort:int (default = 0 ) — Yerel bilgisayarda bağlanılacak bağlantı noktasının numarası. localPort , 0 değerine (varsayılan) ayarlanırsa, sonraki kullanılabilir sistem bağlantı noktası bağlanır. 1024'ten düşük bir bağlantı noktası numarasına bağlanma izni, sistem güvenliği ilkesine tabidir. Örneğin, Mac ve Linux sistemlerinde, uygulamanın 1024'ten düşük bağlantı noktalarına bağlanmak için kök ayrıcalıklarla çalışıyor olması gerekir.
| |
localAddress:String (default = "0.0.0.0 ") — Yerel makinedeki bağlanılacak IP adresi. Bu adres bir IPv4 veya IPv6 adresi olabilir. localAdress öğesi 0.0.0.0 olarak ayarlıysa (varsayılan), soket mevcut olan tüm IPv4 adreslerini dinler. "Mevcut olan tüm IPv6 adreslerini dinlemek için, "::" öğesini localAddress argümanı olarak belirlemeniz gerekir. Bir IPv6 adresini kullanmak için, bilgisayarın ve ağın IPv6'yı destekleyecek şekilde konfigüre edilmesi gerekir. Ayrıca, IPv4 adresine bağlı bir soket, IPv6 adresli bir sokete bağlanamaz. Aynı şekilde, IPv6 adresine bağlı bir soket, IPv4 adresli bir sokete bağlanamaz. Adres türü aynı olmalıdır.
|
Atar
RangeError — Bu hata localPort 0'dan küçük veya 65535'ten büyük olduğunda oluşur.
| |
ArgumentError — Bu hata localAddress öğesi sözdizimi açısından düzgün biçimli bir adres olmadığında oluşur.
| |
IOError — Bu hata aşağıdaki durumlardaki gibi soket bağlanamadığında oluşur:
| |
Error — Bu hata localAddress öğesi geçerli bir yerel adres olmadığında oluşur.
|
Örnek ( Bu örnek nasıl kullanılır? )
udpSocket.bind(); //bind to any available port, listen on all IPv4 addresses udpSocket.bind( 0, "0.0.0.0" ); //same as above udpSocket.bind( 0, "127.0.0.1" ); //any available port on the localhost address udpSocket.bind( 8989, "192.168.0.1" ); //port 8989 on a particular IPv4 address udpSocket.bind( 0, "::" ); //any available port on all IPv6 address udpSocket.bind( 8989, "::1" ); //port 8989 on the IPv6 localhost address udpSocket.bind( 8989, "2001:1890:110b:1e19:f06b:72db:7026:3d7a" ); //port 8989 on a particular IPv6 address
close | () | yöntem |
public function close():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Soketi kapatır.
Soketin uzak makineden bağlantısı kesilir ve soket yerel makineden ayrılır. Kapalı bir soket yeniden kullanılamaz.
Atar
IOError — Soket kapatılamıyorsa (bir dahili ağ veya işletim sistemi hatasından dolayı) veya soket açık değilse.
|
connect | () | yöntem |
public function connect(remoteAddress:String, remotePort:int):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Soketi belirtilen bir uzak adrese ve bağlantı noktasına bağlar.
Datagram soketi "bağlı" olduğunda, datagram paketleri yalnızca belirtilen hedefe gönderilebilir ve belirtilen hedeften alınabilir. Diğer kaynaklardan gelen paketler yok sayılır. Datagram soketini bağlamak gerekmez. Bağlantı kurulduğunda, diğer kaynaklardan gelen yabancı paketleri filtrelemeye gerek kalmaz. Ancak, UDP soketi bağlantısı kalıcı bir ağ bağlantısı (TCP bağlantısında olduğu gibi) değildir. Soketin uzak ucunun mevcut olmaması bile mümkündür.
bind()
yöntemi çağrılmadıysa, soket otomatik olarak varsayılan yerel adrese ve bağlantı noktasına bağlanır.
Parametreler
remoteAddress:String — Bağlantı kurulacak uzak makinenin IP adresi. Bu adres bir IPv4 veya IPv6 adresi olabilir. bind() öğesi çağrılmadıysa, varsayılan bind() öğesi çağrılırken remoteAddress öğesinin adres ailesi olan IPv4 veya IPv6 kullanılır.
| |
remotePort:int — Bir bağlantı kurmak için kullanılan, uzak makine üzerindeki bağlantı noktası numarası.
|
Atar
RangeError — Bu hata localPort 1'den küçük veya 65535'ten büyük olduğunda oluşur.
| |
ArgumentError — Bu hata localAddress öğesi sözdizimi açısından geçerli bir adres olmadığında oluşur. Veya bir varsayılan yönlendirme adresi ('0.0.0.0' veya '::') kullanıldığında.
| |
IOError — Bu hata bind()( öğesi, connect() öğesine yapılan çağrıdan önce çağrılmaması ve varsayılan olarak uzaktan adres ailesine bağlanmak mümkün olmaması gibi bir durumda soket bağlanamıyorsa oluşur.
|
receive | () | yöntem |
public function receive():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bağlı IP adresinde ve bağlantı noktasında gelen paketleri almak için, bu DatagramSocket nesnesini etkinleştirir.
Bu işlev derhal döndürülür. Veri paketi alındığında, DatagramSocket nesnesi bir data
veri olayı dağıtır.
Olaylar
data: — bir UDP paketi alındığında.
|
send | () | yöntem |
public function send(bytes:ByteArray, offset:uint = 0, length:uint = 0, address:String = null, port:int = 0):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
UDP kullanarak ByteArray öğesindeki baytları içeren paketi gönderir.
Soket bağlıysa, paket uzaktan adrese ve connect()
yönteminde belirtilen bağlantı noktasına gönderilir ve bir hedef IP adresi veya bağlantı noktası belirtilemez. Soket bağlı değilse, paket belirtilen adres ve bağlantı noktasına gönderilir ve address
ve port
için geçerli değerler sağlamanız gerekir. bind()
yöntemi çağrılmadıysa, soket otomatik olarak varsayılan yerel adrese ve bağlantı noktasına bağlanır.
Not: Yayınlanan bir adrese veri gönderme desteklenmez.
Parametreler
bytes:ByteArray — paket verilerini içeren bir ByteArray.
| |
offset:uint (default = 0 ) — Paketin başladığı, bytes ByteArray nesnesindeki sıfır temelli uzaklık.
| |
length:uint (default = 0 ) — Paketteki bayt sayısı. Varsayılan 0 değeri, offset parametresi tarafından belirtilen değerden başlayarak tüm ByteArray öğesinin gönderilmesine neden olur.
| |
address:String (default = null ) — Uzak makinenin IPv4 veya IPv6 adresi. connect() yöntemi kullanılarak bir adres zaten belirtilmemişse bir adres gerekir.
| |
port:int (default = 0 ) — Uzak makinedeki bağlantı noktası numarası. Bağlantı noktası connect() yöntemi kullanılarak zaten belirlenmediyse, 0'dan fazla ve 65536'dan az bir değer gerekir.
|
Atar
RangeError — Bu hata port 1'den küçük veya 65535'ten büyük olduğunda meydana gelir.
| |
ArgumentError — Soket bağlı değilse ve adres düzgün biçimli bir adres değilse.
| |
IOError — Bu hata oluşur:
| |
Error — bytes parametresi null olduğunda.
| |
RangeError — offset değeri bytes öğesinde belirtilen ByteArray öğesinin uzunluğundan daha büyükse veya offset ve length tarafından yazıldığı belirtilen veri miktarı mevcut veriyi aşıyorsa.
| |
IllegalOperationError — Soket zaten bağlıyken adress veya port parametreleri belirlenirse.
|
close | Olay |
flash.events.Event
özellik Event.type =
flash.events.Event.CLOSE
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
İşletim sistemi bu soketi kapattığında gönderilir.
DatagramSocket close()
yöntemi çağrıldığında close
olayı gönderilmez.
Event.CLOSE
sabiti, close
olay nesnesinin type
özelliği değerini tanımlar.
Bu olay şu özelliklere sahiptir:
Özellik | Değer |
---|---|
bubbles | false |
cancelable | false ; iptal edilecek varsayılan davranış yoktur. |
currentTarget | Bu Event nesnesini olay dinleyicisiyle etkin olarak işleyen nesne. |
target | Bağlantısı kapatılan nesne. |
data | Olay |
flash.events.DatagramSocketDataEvent
özellik DatagramSocketDataEvent.type =
flash.events.DatagramSocketDataEvent.DATA
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bu soket bir veri paketi aldığında gönderilir.
data
olay nesnesinin type
özelliği değerini tanımlar.
ioError | Olay |
flash.events.IOErrorEvent
özellik IOErrorEvent.type =
flash.events.IOErrorEvent.IOERROR
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2.5 |
Bu soket bir G/Ç hatası aldığında gönderilir.
package { import flash.display.Sprite; import flash.events.DatagramSocketDataEvent; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.DatagramSocket; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.utils.ByteArray; import flash.utils.Timer; public class DatagramSocketExample extends Sprite { private var datagramSocket:DatagramSocket = new DatagramSocket();; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var targetIP:TextField; private var targetPort:TextField; private var message:TextField; public function DatagramSocketExample() { setupUI(); } private function bind( event:Event ):void { if( datagramSocket.bound ) { datagramSocket.close(); datagramSocket = new DatagramSocket(); } datagramSocket.bind( parseInt( localPort.text ), localIP.text ); datagramSocket.addEventListener( DatagramSocketDataEvent.DATA, dataReceived ); datagramSocket.receive(); log( "Bound to: " + datagramSocket.localAddress + ":" + datagramSocket.localPort ); } private function dataReceived( event:DatagramSocketDataEvent ):void { //Read the data from the datagram log("Received from " + event.srcAddress + ":" + event.srcPort + "> " + event.data.readUTFBytes( event.data.bytesAvailable ) ); } private function send( event:Event ):void { //Create a message in a ByteArray var data:ByteArray = new ByteArray(); data.writeUTFBytes( message.text ); //Send a datagram to the target try { datagramSocket.send( data, 0, 0, targetIP.text, parseInt( targetPort.text )); log( "Sent message to " + targetIP.text + ":" + targetPort.text ); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { targetIP = createTextField( 10, 10, "Target IP:", "192.168.0.1" ); targetPort = createTextField( 10, 35, "Target port:", "8989" ); message = createTextField( 10, 60, "Message:", "Lucy can't drink milk." ); localIP = createTextField( 10, 85, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 110, "Local port:", "0" ); createTextButton( 250, 135, "Bind", bind ); createTextButton( 300, 135, "Send", send ); logField = createTextField( 10, 160, "Log:", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 180; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
Tue Jun 12 2018, 01:09 PM Z