物件DgramSocket
dgram.Socket物件是一個封裝了資料包函數功能的EventEmitter。
DgramSocket 實例是由dgram.createSocket() 創建的。創建dgram.Socket實例不需要使用new 關鍵字。
創建方法:
1
2var dgram = require('dgram');
var sock = dgram.createSocket('udp4');
事件
DgramSocket 繼承於EventEmitter,物件的狀態變化,以及資料接受,都是以事件的方式實現。
close 事件
close
事件將在使用close()
關閉一個socket
之後觸發。該事件一旦觸發,這個socket
上將不會觸發新的message
事件。
error 事件
當有任何錯誤發生時,error
事件將被觸發。
listening 事件
當一個socket
開始監聽封包資訊時,listening
事件將會被觸發。該事件會在建立UDP socket 之後被立即觸發。
message 事件
當有新的資料包被socket
接收時,message
事件會被觸發。msg
和rinfo
會作為參數傳遞到該事件的處理函數中。
- msg:Buffer,訊息
- rinfo: Object,遠端位址訊息
- address: string,發送方地址
- family: string,位址類型('IPv4' or 'IPv6')
- port: number,發送者端口
- size: number,訊息大小
繼承關係
靜態屬性
defaultMaxListeners
Integer, 預設全域最大監聽器數
1static Integer DgramSocket.defaultMaxListeners;
成員函數
bind
該方法會令dgram.Socket在指定的port
和addr
上監聽資料包資訊。綁定完成時會觸發一個listening
事件。
1
2DgramSocket.bind(Integer port = 0,
String addr = "") async;
呼叫參數:
- port: Integer, 指定綁定端口,若
port
未指定或為0,作業系統會嘗試綁定一個隨機的端口 - addr: String, 指定綁定位址,若address 未指定,作業系統會嘗試在所有位址上監聽。
該方法會令dgram.Socket在opts
指定的port
和address
上監聽資料包資訊。綁定完成時會觸發一個listening
事件。
1DgramSocket.bind(Object opts) async;
呼叫參數:
- opts: Object, 指定綁定參數
send
在socket 上發送一個資料包
1
2
3Integer DgramSocket.send(Buffer msg,
Integer port,
String address = "") async;
呼叫參數:
- msg:Buffer, 指定發送的數據
- port: Integer, 指定發送的目的端口
- address: String, 指定發送的目的位址
回傳結果:
- Integer, 回傳尺寸
在socket 上發送一個資料包
1
2
3
4
5Integer DgramSocket.send(Buffer msg,
Integer offset,
Integer length,
Integer port,
String address = "") async;
呼叫參數:
- msg:Buffer, 指定發送的數據
- offset: Integer, 從指定偏移開始發送
- length: Integer, 之發送指定長度
- port: Integer, 指定發送的目的端口
- address: String, 指定發送的目的位址
回傳結果:
- Integer, 回傳尺寸
address
傳回一個包含socket 位址資訊的物件。對於UDP socket,該物件將包含address、family 和port 屬性。
1NObject DgramSocket.address();
回傳結果:
- NObject, 回傳物件綁定地址
close
關閉目前socket
1DgramSocket.close();
關閉目前socket
1DgramSocket.close(Function callback);
呼叫參數:
- callback: Function, 關閉完成後的回呼函數,它相當於為
close
事件新增了一個監聽器
getRecvBufferSize
查詢socket 接收緩衝區大小
1Integer DgramSocket.getRecvBufferSize();
回傳結果:
- Integer, 回傳查詢結果
getSendBufferSize
查詢socket 發送緩衝區大小
1Integer DgramSocket.getSendBufferSize();
回傳結果:
- Integer, 回傳查詢結果
addMembership
使用IP_ADD_MEMBERSHIP 套接字選項加入給定multicastAddress 和multicastInterface 處的多重播放群組。如果未指定multicastInterface 參數,作業系統將選擇一個介面並向其新增成員資格。若要為每個可用介面新增成員資格,請多次呼叫addMembership ,每個介面呼叫一次。
1
2DgramSocket.addMembership(String multicastAddress,
String multicastInterface = "");
呼叫參數:
- multicastAddress: String, 指定要加入的多重播放群組位址
- multicastInterface: String, 指定要加入的多播群組介面
dropMembership
使用IP_DROP_MEMBERSHIP 套接字選項在multicastAddress 處留下多播群組。當套接字關閉或進程終止時,核心會自動呼叫此方法,因此大多數應用程式永遠沒有理由呼叫此方法。
1
2DgramSocket.dropMembership(String multicastAddress,
String multicastInterface = "");
呼叫參數:
- multicastAddress: String, 指定要刪除的多重播放群組位址
- multicastInterface: String, 指定要刪除的多重播放群組介面
setMulticastTTL
設定IP_MULTICAST_TTL 套接字選項
1DgramSocket.setMulticastTTL(Integer ttl);
呼叫參數:
- ttl: Integer, 指定要設定的ttl,ttl 參數可以介於0 和255 之間。大多數系統上的預設值為1。
setRecvBufferSize
設定socket 接收緩衝區大小
1DgramSocket.setRecvBufferSize(Integer size);
呼叫參數:
- size: Integer, 指定要設定的尺寸
setSendBufferSize
設定socket 發送緩衝區大小
1DgramSocket.setSendBufferSize(Integer size);
呼叫參數:
- size: Integer, 指定要設定的尺寸
setBroadcast
設定或清除SO_BROADCAST socket 選項
1DgramSocket.setBroadcast(Boolean flag);
呼叫參數:
- flag: Boolean, 當設定為true, UDP封包會被傳送到一個本地介面的廣播位址
ref
維持fibjs 程序不退出,在物件綁定期間阻止fibjs 進程退出
1DgramSocket DgramSocket.ref();
回傳結果:
- DgramSocket, 傳回當前對象
unref
允許fibjs 進程退出,在物件綁定期間允許fibjs 進程退出
1DgramSocket DgramSocket.unref();
回傳結果:
- DgramSocket, 傳回當前對象
on
綁定一個事件處理函數到對象
1
2Object DgramSocket.on(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
綁定一個事件處理函數到對象
1Object DgramSocket.on(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
addListener
綁定一個事件處理函數到對象
1
2Object DgramSocket.addListener(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
綁定一個事件處理函數到對象
1Object DgramSocket.addListener(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
prependListener
綁定一個事件處理函數到物件起始
1
2Object DgramSocket.prependListener(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
綁定一個事件處理函數到物件起始
1Object DgramSocket.prependListener(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
once
綁定一個一次性事件處理函數到對象,一次性處理函數只會觸發一次
1
2Object DgramSocket.once(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
綁定一個一次性事件處理函數到對象,一次性處理函數只會觸發一次
1Object DgramSocket.once(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
prependOnceListener
綁定一個事件處理函數到物件起始
1
2Object DgramSocket.prependOnceListener(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
綁定一個事件處理函數到物件起始
1Object DgramSocket.prependOnceListener(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
off
從物件處理佇列中取消指定函數
1
2Object DgramSocket.off(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
取消物件處理佇列中的全部函數
1Object DgramSocket.off(String ev);
呼叫參數:
- ev: String, 指定事件的名稱
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
從物件處理佇列中取消指定函數
1Object DgramSocket.off(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱作為事件名稱,屬性的值作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
removeListener
從物件處理佇列中取消指定函數
1
2Object DgramSocket.removeListener(String ev,
Function func);
呼叫參數:
- ev: String, 指定事件的名稱
- func: Function, 指定事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
取消物件處理佇列中的全部函數
1Object DgramSocket.removeListener(String ev);
呼叫參數:
- ev: String, 指定事件的名稱
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
從物件處理佇列中取消指定函數
1Object DgramSocket.removeListener(Object map);
呼叫參數:
- map: Object, 指定事件映射關係,物件屬性名稱作為事件名稱,屬性的值作為事件處理函數
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
removeAllListeners
從物件處理佇列中取消所有事件的所有監聽器, 如果指定事件,則移除指定事件的所有監聽器。
1Object DgramSocket.removeAllListeners(String ev);
呼叫參數:
- ev: String, 指定事件的名稱
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
從物件處理佇列中取消所有事件的所有監聽器, 如果指定事件,則移除指定事件的所有監聽器。
1Object DgramSocket.removeAllListeners(Array evs = []);
呼叫參數:
- evs: Array, 指定事件的名稱
回傳結果:
- Object, 傳回事件物件本身,便於鍊式調用
setMaxListeners
監聽器的預設限制的數量,僅用於相容
1DgramSocket.setMaxListeners(Integer n);
呼叫參數:
- n: Integer, 指定事件的數量
getMaxListeners
取得監聽器的預設限制的數量,僅用於相容
1Integer DgramSocket.getMaxListeners();
回傳結果:
- Integer, 回傳預設限制數量
listeners
查詢物件指定事件的監聽器陣列
1Array DgramSocket.listeners(String ev);
呼叫參數:
- ev: String, 指定事件的名稱
回傳結果:
- Array, 傳回指定事件的監聽器數組
listenerCount
查詢物件指定事件的監聽器數量
1Integer DgramSocket.listenerCount(String ev);
呼叫參數:
- ev: String, 指定事件的名稱
回傳結果:
- Integer, 傳回指定事件的監聽器數量
查詢物件指定事件的監聽器數量
1
2Integer DgramSocket.listenerCount(Value o,
String ev);
呼叫參數:
- o: Value, 指定查詢的對象
- ev: String, 指定事件的名稱
回傳結果:
- Integer, 傳回指定事件的監聽器數量
eventNames
查詢監聽器事件名稱
1Array DgramSocket.eventNames();
回傳結果:
- Array, 傳回事件名稱數組
emit
主動觸發一個事件
1
2Boolean DgramSocket.emit(String ev,
...args);
呼叫參數:
- ev: String, 事件名稱
- args: ..., 事件參數,將會傳遞給事件處理函數
回傳結果:
- Boolean, 回傳事件觸發狀態,有回應事件回傳true,否則回傳false
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String DgramSocket.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value DgramSocket.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值