Object 內建對象

物件Socket

網路介面物件

Socket 屬於net模組,創建方法

1
var s = new net.Socket();

繼承關係

建構函數

Socket

Socket 建構函數,建立一個新的Socket 對象

1
new Socket(Integer family = net.AF_INET);

呼叫參數:

  • family: Integer, 指定位址集,預設為AF_INET,ipv4

成員屬性

family

Integer, 查詢目前Socket 物件的位址集

1
readonly Integer Socket.family;

remoteAddress

String, 查詢目前連線的對方地址

1
readonly String Socket.remoteAddress;

remotePort

Integer, 查詢目前連接的對方端口

1
readonly Integer Socket.remotePort;

localAddress

String, 查詢目前連線的本機位址

1
readonly String Socket.localAddress;

localPort

Integer, 查詢目前連接的本機端口

1
readonly Integer Socket.localPort;

timeout

Integer, 查詢和設定超時時間單位毫秒

1
Integer Socket.timeout;

fd

Integer, 查詢Stream對應的文件描述符值, 由子類實現

1
readonly Integer Socket.fd;

成員函數

connect

建立一個tcp 連接

1 2 3
Socket.connect(String host, Integer port, Integer timeout = 0) async;

呼叫參數:

  • host: String, 指定對方位址或主機名,也可以指向unix socket 和Windows pipe 路徑
  • port: Integer, 指定對方端口,連接unix socket 和Windows pipe 時,此參數需要為 0
  • timeout: Integer, 指定超時時間,單位是毫秒,預設為 0

bind

將目前Socket 綁定至本地所有位址的指定端口

1 2
Socket.bind(Integer port, Boolean allowIPv4 = true);

呼叫參數:

  • port: Integer, 指定綁定的端口
  • allowIPv4: Boolean, 指定是否接受ipv4 連接,預設為true。本參數在ipv6 時有效,並依賴作業系統

將目前Socket 綁定至指定位址的指定端口

1 2 3
Socket.bind(String addr, Integer port = 0, Boolean allowIPv4 = true);

呼叫參數:

  • addr: String, 指定綁定的位址,也可以指向unix socket 和Windows pipe 路徑
  • port: Integer, 指定綁定的端口,綁定unix socket 和Windows pipe 時,忽略此參數
  • allowIPv4: Boolean, 指定是否接受ipv4 連接,預設為true。本參數在ipv6 時有效,並依賴作業系統

listen

開始監聽連線請求

1
Socket.listen(Integer backlog = 120);

呼叫參數:

  • backlog: Integer, 指定請求佇列長度,超出的請求將被拒絕,預設為120

accept

等待並接受一個連接

1
Socket Socket.accept() async;

回傳結果:

  • Socket, 返回接收到得連接對象

recv

從連接讀取指定大小的數據,不同於read 方法,recv 並不保證讀完要求的數據,而是在讀取到數據後立即返回

1
Buffer Socket.recv(Integer bytes = -1) async;

呼叫參數:

  • bytes: Integer, 指定要讀取的資料量,預設讀取任意尺寸的數據

回傳結果:

  • Buffer, 傳回從連線讀取的數據

send

將給定的資料寫入連接,此方法等效於write 方法

1
Socket.send(Buffer data) async;

呼叫參數:

  • data:Buffer, 給定要寫入的數據

read

從流內讀取指定大小的數據

1
Buffer Socket.read(Integer bytes = -1) async;

呼叫參數:

  • bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備

回傳結果:

  • Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null

write

將給定的資料寫入流

1
Socket.write(Buffer data) async;

呼叫參數:

  • data:Buffer, 給定要寫入的數據

flush

將檔案緩衝區內容寫入實體設備

1
Socket.flush() async;

close

關閉目前流對象

1
Socket.close() async;

copyTo

複製流資料到目標流中

1 2
Long Socket.copyTo(Stream stm, Long bytes = -1) async;

呼叫參數:

  • stm:Stream, 目標流對象
  • bytes: Long, 複製的位元組數

回傳結果:

  • Long, 傳回複製的位元組數

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String Socket.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value Socket.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值