Paket | flash.net |
Sınıf | public class ServerSocket |
Miras Alma | ServerSocket 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 ServerSocket.isSupported
özelliğini kullanarak test edebilirsiniz. Birden fazla profilde API desteği ile ilgili daha fazla bilgi için bkz. AIR Profil Desteği.
TCP sunucusu, uzak istemcilerden gelen bağlantıları dinler. Bir istemci bağlanmayı denediğinde, ServerSocket bir connect
olayı gönderir. Olay için gönderilen ServerSocketConnectEvent nesnesi, sunucu ile istemci arasındaki TCP bağlantısını temsil eden bir Socket nesnesi sağlar. Bağlanan istemciyle sonraki tüm iletişimler için bu Socket nesnesini kullanın. Gerektiğinde Socket nesnesinden istemci adresini ve bağlantı noktasını alabilirsiniz.
Not: Uygulamanız Socket nesnesine yapılan bir başvuruyu saklamaktan sorumludur. Yapmazsanız, nesne çöp toplama için uygun hale gelir ve çalışma zamanı tarafından bir uyarı olmaksızın silinebilir.
Bir ServerSocket nesnesini dinleme durumuna getirmek için listen()
yöntemini çağırın. Dinleme durumunda, TCP protokolünü kullanan bir istemci bağlı adrese ve bağlantı noktasına bağlanmayı her denediğinde, sunucu soket nesnesi connect
olaylarını gönderir. ServerSocket nesnesi, siz close()
yöntemini çağırıncaya kadar ek bağlantıları dinlemeye devam eder.
TCP bağlantıları kalıcıdır - bağlantının bir tarafı onu kapatana kadar (veya ciddi bir ağ hatası oluşana kadar) mevcut kalırlar. Bağlantı üzerinden gönderilen herhangi bir veri iletilebilir paketlere bölünür ve öbür tarafta yeniden toplanır. Tüm paketlerin ulaşması garanti edilir (mantık çerçevesinde) — kayıp paketler yeniden iletilir. Genelde, TCP protokolü, kullanılabilir ağ bant genişliğini, UDP protokolünden daha iyi yönetir. Soket bağlantısı gerektiren çoğu AIR uygulaması, DatagramSocket sınıfı yerine ServerSocket ve Socket sınıflarını kullanmalıdır.
ServerSocket 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.
İlgili API Öğeleri
Özellik | Tanımlayan: | ||
---|---|---|---|
bound : Boolean [salt okunur]
Soketin yerel bir adrese ve bağlantı noktasına bağlı olup olmadığını belirtir. | ServerSocket | ||
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 ServerSocket özelliklerinin desteklenip desteklenmediğini belirtir. | ServerSocket | ||
listening : Boolean [salt okunur]
Sunucu soketinin gelen bağlantıları dinleyip dinlemediğini belirtir. | ServerSocket | ||
localAddress : String [salt okunur]
Üzerinde soketin dinlediği IP adresi. | ServerSocket | ||
localPort : int [salt okunur]
Üzerinde soketin dinlediği bağlantı noktası. | ServerSocket |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Bir ServerSocket nesnesi oluşturur. | ServerSocket | ||
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. | ServerSocket | ||
Soketi kapatır ve bağlantıları dinlemeyi durdurur. | ServerSocket | ||
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 | ||
Bağlı IP adresi ve bağlantı noktası üzerindeki TCP bağlantılarını dinlemeyi başlatır. | ServerSocket | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
EventDispatcher nesnesinden bir dinleyiciyi kaldırır. | EventDispatcher | ||
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. | ServerSocket | |||
Uzak bir soket, bu sunucu soketine bağlanmak için arama yaptığında gönderilir. | ServerSocket | |||
[broadcast olayı] Çalışan Flash Player veya AIR uygulaması sistem odağını kaybettiğinde ve etkin olmayan duruma geldiğinde gönderilir. | EventDispatcher |
bound | özellik |
isSupported | özellik |
listening | özellik |
localAddress | özellik |
localPort | özellik |
ServerSocket | () | Yapıcı |
public function ServerSocket()
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bir ServerSocket nesnesi oluşturur.
Atar
SecurityError — İçerik çağırma, AIR uygulama güvenlik sanal alanı dışında yürütülüyorsa bu hata oluşur.
|
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.
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 — soket bağlanamadığında, örneğin:
|
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 ve bağlantıları dinlemeyi durdurur.
Kapatılan soketler yeniden açılamaz. Bunun yerine yeni bir ServerSocket örneği oluşturun.
Atar
Error — Soket kapatılamıyorsa veya soket açılmadıysa bu hata oluşur.
|
listen | () | yöntem |
public function listen(backlog:int = 0):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Bağlı IP adresi ve bağlantı noktası üzerindeki TCP bağlantılarını dinlemeyi başlatır.
listen()
yöntemi derhal geri döndürülür. listen()
öğesini çağırdıktan sonra bir bağlantı girişiminde bulunulduğunda, ServerSocket nesnesi bir connect
olayı gönderir. ServerSocketConnectEvent olay nesnesinin socket
özelliği, sunucu-istemci bağlantısını temsil eden bir Socket nesnesine başvurur.
backlog
parametresi, connect
olayları bağlantınız tarafından işlenirken kaç tane beklemede bağlantının kuyruğa alındığını belirtir. Kuyruk doluysa, connect
olayı gönderilmeden ek bağlantılar reddedilir. Varsayılan sıfır değeri belirtilirse, sistemin maksimum kuyruk uzunluğu kullanılır. Bu uzunluk, platforma göre değişiklik gösterir ve bilgisayara göre konfigüre edilebilir. Belirtilen değer, sistemin maksimum uzunluğunu aşarsa, bu değer yerine sistemin maksimum uzunluğu kullanılır. Asıl backlog değerini keşfetmeye yarayan herhangi bir şey sağlanmaz. (Sistemin maksimum değeri, ana bilgisayardaki TCP ağ alt sisteminin SOMAXCONN ayarı tarafından belirlenir.)
Parametreler
backlog:int (default = 0 ) — Beklemedeki bağlantı kuyruğunun maksimum uzunluğu. backlog 0 olursa, kuyruk uzunluğu maksimum sistem değerine ayarlanır.
|
Atar
IOError — Bu hata Soket açık veya bağlı değilse meydana gelir. Bu hata listen() öğesine yapılan çağrı herhangi başka bir nedenden dolayı başarısız olursa da meydana gelir.
| |
RangeError — backlog parametresi sıfırdan düşükse bu hata oluşur.
|
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.
ServerSocket close()
yöntemi çağrıldığında close
olayı gönderilmez. Uygulamanızdaki diğer nesneler close
olayını kullanıyorsa, close()
yöntemini çağırmadan önce olayı elle gönderebilirsiniz.
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. |
connect | Olay |
flash.events.ServerSocketConnectEvent
özellik ServerSocketConnectEvent.type =
flash.events.ServerSocketConnectEvent.CONNECT
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 2 |
Uzak bir soket, bu sunucu soketine bağlanmak için arama yaptığında gönderilir.
BirServerSocketConnectEvent
olay nesnesinin type
özelliğinin değerini tanımlar.
Bu olay şu özelliklere sahiptir:
Özellik | Değer |
---|---|
bubbles | false . |
cancelable | false , iptal edilecek varsayılan bir davranış yoktur. |
currentTarget | Bu ServerSocket nesnesi. |
target | Bu ServerSocket nesnesi. |
socket | Yeni bağlantıyı temsil eden Socket nesnesi. |
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.text.TextField; import flash.text.TextFieldType; import flash.utils.ByteArray; public class ServerSocketExample extends Sprite { private var serverSocket:ServerSocket = new ServerSocket(); private var clientSocket:Socket; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var message:TextField; public function ServerSocketExample() { setupUI(); } private function onConnect( event:ServerSocketConnectEvent ):void { clientSocket = event.socket; clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData ); log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } private function onClientSocketData( event:ProgressEvent ):void { var buffer:ByteArray = new ByteArray(); clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable ); log( "Received: " + buffer.toString() ); } private function bind( event:Event ):void { if( serverSocket.bound ) { serverSocket.close(); serverSocket = new ServerSocket(); } serverSocket.bind( parseInt( localPort.text ), localIP.text ); serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect ); serverSocket.listen(); log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort ); } private function send( event:Event ):void { try { if( clientSocket != null && clientSocket.connected ) { clientSocket.writeUTFBytes( message.text ); clientSocket.flush(); log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } else log("No socket connection."); } 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 { localIP = createTextField( 10, 10, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 35, "Local port", "0" ); createTextButton( 170, 60, "Bind", bind ); message = createTextField( 10, 85, "Message", "Lucy can't drink milk." ); createTextButton( 170, 110, "Send", send ); logField = createTextField( 10, 135, "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 = 100; 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