Object 內置對象

對象Socket

網絡套接口對象

Socket 屬於 net 模塊,創建方法

1
var s = new net.Socket();

繼承關係

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<class>Stream|fd|read();write();flush();close();copyTo()] [<this>Socket|new Socket()|family;remoteAddress;remotePort;localAddress;localPort;timeout|connect();bind();listen();accept();recv();send()] [object] <:- [Stream] [Stream] <:- [Socket] Socket new Socket() family remoteAddress remotePort localAddress localPort timeout connect() bind() listen() accept() recv() send() Stream fd read() write() flush() close() copyTo() object toString() toJSON()

構造函數

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
Socket.connect(String host, Integer port = 0) async;

調用參數:

  • host: String, 指定對方地址或主機名,也可以指向unix socket 和Windows pipe 路徑
  • port: Integer, 指定對方端口,連接unix socket 和Windows pipe 時,忽略此參數

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 序列化的值