物件Socket
網路介面物件
Socket 屬於net模組,創建方法
1var s = new net.Socket();
繼承關係
建構函數
Socket
Socket 建構函數,建立一個新的Socket 對象
1new Socket(Integer family = net.AF_INET);
呼叫參數:
- family: Integer, 指定位址集,預設為AF_INET,ipv4
成員屬性
family
Integer, 查詢目前Socket 物件的位址集
1readonly Integer Socket.family;
remoteAddress
String, 查詢目前連線的對方地址
1readonly String Socket.remoteAddress;
remotePort
Integer, 查詢目前連接的對方端口
1readonly Integer Socket.remotePort;
localAddress
String, 查詢目前連線的本機位址
1readonly String Socket.localAddress;
localPort
Integer, 查詢目前連接的本機端口
1readonly Integer Socket.localPort;
timeout
Integer, 查詢和設定超時時間單位毫秒
1Integer Socket.timeout;
fd
Integer, 查詢Stream對應的文件描述符值, 由子類實現
1readonly Integer Socket.fd;
成員函數
connect
建立一個tcp 連接
1
2
3Socket.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
2Socket.bind(Integer port,
Boolean allowIPv4 = true);
呼叫參數:
- port: Integer, 指定綁定的端口
- allowIPv4: Boolean, 指定是否接受ipv4 連接,預設為true。本參數在ipv6 時有效,並依賴作業系統
將目前Socket 綁定至指定位址的指定端口
1
2
3Socket.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
開始監聽連線請求
1Socket.listen(Integer backlog = 120);
呼叫參數:
- backlog: Integer, 指定請求佇列長度,超出的請求將被拒絕,預設為120
accept
等待並接受一個連接
1Socket Socket.accept() async;
回傳結果:
- Socket, 返回接收到得連接對象
recv
從連接讀取指定大小的數據,不同於read 方法,recv 並不保證讀完要求的數據,而是在讀取到數據後立即返回
1Buffer Socket.recv(Integer bytes = -1) async;
呼叫參數:
- bytes: Integer, 指定要讀取的資料量,預設讀取任意尺寸的數據
回傳結果:
- Buffer, 傳回從連線讀取的數據
send
將給定的資料寫入連接,此方法等效於write 方法
1Socket.send(Buffer data) async;
呼叫參數:
- data:Buffer, 給定要寫入的數據
read
從流內讀取指定大小的數據
1Buffer Socket.read(Integer bytes = -1) async;
呼叫參數:
- bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備
回傳結果:
- Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null
write
將給定的資料寫入流
1Socket.write(Buffer data) async;
呼叫參數:
- data:Buffer, 給定要寫入的數據
flush
將檔案緩衝區內容寫入實體設備
1Socket.flush() async;
close
關閉目前流對象
1Socket.close() async;
copyTo
複製流資料到目標流中
1
2Long Socket.copyTo(Stream stm,
Long bytes = -1) async;
呼叫參數:
- stm:Stream, 目標流對象
- bytes: Long, 複製的位元組數
回傳結果:
- Long, 傳回複製的位元組數
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String Socket.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value Socket.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值