Skip to content

UDP 通信

createUDPSocket

TIP

該API使用方法為: UDPSocket wx.createUDPSocket()

  • 功能說明: 創建一個UDP Socket實例。
  • 返回值: UDPSocket, 一個UDP Socket實例。

UDPSocket

說明

一個UDP Socket實例,默認使用IPv4協定。

.bind

TIP

該API使用方法為: number UDPSocket.bind(number port)

  • 功能說明: 綁定一個系統隨機分配的可用埠,或綁定一個指定的埠號。

  • 參數及說明: number port, 指定要綁定的埠號,不傳則返回系統隨機分配的可用埠。

  • 返回值: number, 綁定成功的埠號。

  • 示例代碼:

js
const udp = wx.createUDPSocket()
const port = udp.bind()

.close

TIP

該API使用方法為: UDPSocket.close()

  • 功能說明: 關閉UDP Socket實例,相當於銷毀。 在關閉之後,UDP Socket實例不能再發送消息,每次調用UDPSocket.send將會觸發錯誤事件,並且message事件回呼函數也不會再也執行,在UDPSocket實例被創建後將被Native强引用,保證其不被GC,在UDPSocket.close後將解除對其的强引用,讓UDPSocket實例遵從GC。

.connect

TIP

該API使用方法為: UDPSocket.connect(Object object)

  • 功能說明: 預先連接到指定的IP和port,需要配合write方法一起使用。

  • 參數及說明: Object object

    内容類型預設值必填說明
    addressstring-要發消息的地址
    portnumber-要發送消息的埠號
  • 示例代碼:

js
  const udp = wx.createUDPSocket()
  udp.bind()
  udp.connect({
    address: '192.168.193.2',
    port: 8848,
  })
  udp.write({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
  })

.onClose

TIP

該API使用方法為: UDPSocket.onClose(function listener)

  • 功能說明: 監聽關閉事件。
  • 參數及說明: function listener 關閉事件的監聽函數。

.offClose

TIP

該API使用方法為: UDPSocket.offClose(function listener)

  • 功能說明: 移除關閉事件的監聽函數。

  • 參數及說明: function listener onClose傳入的監聽函數,不傳此參數則移除所有監聽函數。

  • 示例代碼:

js
const listener = function (res) { console.log(res) }

UDPSocket.onClose(listener)
UDPSocket.offClose(listener) // Pass the same function object used for listening.

.onError

TIP

該API使用方法為: UDPSocket.onError(function listener)

  • 功能說明: 監聽錯誤事件。

  • 參數及說明: function listener, 錯誤事件的監聽函數,參數Object res如下

    内容類型說明
    errMsgstring錯誤資訊

.offError

TIP

該API使用方法為: UDPSocket.offError(function listener)

  • 功能說明: 移除錯誤事件的監聽函數。

  • 參數及說明: function listener, onError傳入的監聽函數,不傳此參數則移除所有監聽函數。

  • 示例代碼:

js
const listener = function (res) { console.log(res) }

UDPSocket.onError(listener)
UDPSocket.offError(listener)  // Pass the same function object used for listening.

.onListening

TIP

該API使用方法為: UDPSocket.onListening(function listener)

  • 功能說明: 監聽開始監聽數据包消息的事件。
  • 參數及說明: function listener, 開始監聽數据包消息的事件的監聽函數。

.offListening

TIP

該API使用方法為: UDPSocket.offListening(function listener)

  • 功能說明: 移除開始監聽數据包消息的事件的監聽函數。

  • 參數及說明: function listener, onListening傳入的監聽函數,不傳此參數則移除所有監聽函數。

  • 示例代碼:

js
const listener = function (res) { console.log(res) }

UDPSocket.onListening(listener)
UDPSocket.offListening(listener) // Pass the same function object used for listening.

.onMessage

TIP

該API使用方法為: UDPSocket.onMessage(function listener)

  • 功能說明: 監聽收到消息的事件。

  • 參數及說明: function listener, 收到消息的事件的監聽函數,參數Object res如下:

    内容類型說明
    messageArrayBuffer收到的消息。 消息長度需要小於4096
    remoteInfoObject發送端地址資訊
    • remoteInfo結構内容
      内容類型說明
      addressstring發送消息的socket的地址
      familystring使用的協定族,為IPv4或者IPv6
      portnumber埠號
      sizenumbermessage的大小,單位:位元組

.offMessage

TIP

該API使用方法為: UDPSocket.offMessage(function listener)

  • 功能說明: 移除收到消息的事件的監聽函數。

  • 參數及說明: function listener, onMessage傳入的監聽函數,不傳此參數則移除所有監聽函數。

  • 示例代碼:

js
const listener = function (res) { console.log(res) }

UDPSocket.onMessage(listener)
UDPSocket.offMessage(listener)  // Pass the same function object used for listening.

.send

TIP

該API使用方法為: UDPSocket.send(Object object)

  • 功能說明: 向指定的IP和port發送消息。

  • 參數及說明: Object object。

    内容類型預設值必填說明
    addressstring-要發消息的地址。
    portnumber-要發送消息的埠號
    messagestring/ArrayBuffer-要發送的數據
    offsetnumber0發送數據的偏移量,僅當message為ArrayBuffer類型時有效
    lengthnumbermessage.byteLength發送數據的長度,僅當message為ArrayBuffer類型時有效
  • 示例代碼:

js
const udp = wx.createUDPSocket()
  udp.bind()
  udp.send({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
 })

.setTTL

TIP

該API使用方法為: UDPSocket.setTTL(number ttl)

  • 功能說明: 設定IP_TTL通訊端選項,用於設定一個IP數据包傳輸時允許的最大跳步數。

  • 參數及說明: number ttl, ttl參數可以是0到255之間。

  • 示例代碼:

js
const udp = wx.createUDPSocket()
udp.onListening(function () {
  udp.setTTL(64)
})
udp.bind()

.write

TIP

該API使用方法為: UDPSocket.write()

  • 功能說明: 用法與send方法相同,如果沒有預先調用connect則與send無差异。

說明

即使調用了connect也需要在本接口填入地址和埠參數。

  • 示例代碼:
js
  const udp = wx.createUDPSocket()
  udp.bind()
  udp.connect({
    address: '192.168.193.2',
    port: 8848,
  })
  udp.write({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
  })