收藏
回答

udp socket无法发送数据

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug UDPSocket 微信iOS客户端 7.0.6 2.8.0

如下代码可以创建UDP socket,但是无法发出数据,真机调试和预览都发不了。发送端手机为iPhone6和OPPO A57,接收端为笔记本电脑。已确定两端都连接同一个WIFI热点并在同一个局域网内,而且用其他手机工具APP可以从手机端成功发送UDP数据到接收端。试了几个基础库都不行。(2.7.1   2.7.7)


const udp = wx.createUDPSocket()

//udp.bind()


if (udp === null) {

console.log('暂不支持')

return;

} else {

wx.showToast({

title: "" + udp,

icon: 'success',

duration: 2000

})

}


udp.send({

address: '192.168.125.4',

port: 8848,

message: 'hello, how are you'

})


回答关注问题邀请回答
收藏

6 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2019-08-15

    先确认下有没有收到任何错误事件

    2019-08-15
    有用
    回复 5
    • brengthdom
      brengthdom
      2019-08-15
      console没有错误提示,但是如果加了bind就会有错误,我们不需要接收就注释掉了bind
      2019-08-15
      回复
    • 小程序/小游戏开发-Link
      小程序/小游戏开发-Link
      2019-08-15回复brengthdom
      需要 bind 才能发消息的,bind 有什么错误呢?
      2019-08-15
      回复
    • brengthdom
      brengthdom
      2019-08-15

      加了bind之后现在能正常发送了了,不知道刚才怎么回事。谢谢

      2019-08-15
      回复
    • brengthdom
      brengthdom
      2019-08-15回复小程序/小游戏开发-Link
      请问有小程序团队的答疑的微信或QQ群么?或是能加一下您的微信么?以后碰上问题好请教
      2019-08-15
      回复
    • 小程序/小游戏开发-Link
      小程序/小游戏开发-Link
      2019-08-16回复brengthdom
      有问题还是优先在社区提问,值班同事会及时跟进的。
      2019-08-16
      回复
  • flyboy
    flyboy
    2020-02-24

    基础库是2.10.1的,真机调试报 “Cannot read property 'bind' of undefined“

    手机体验版 进不了 udpSocket.onListening ,无法打印console.log

    this.udpSocket.onListening(function (res) {

    console.log('udpSocket监听中...')

    console.log(res)


    2020-02-24
    有用 2
    回复
  • Cold shadow
    Cold shadow
    2022-11-29

    我用开发者工具没有问题可以发送也可以收到,但是真机无论是预览还是调试都只能收到无法发送,还不报错

    ————————————————————————————————js
    onReady() {
        // 请求获取ip
        let self = this
        self.data.udp = wx.createUDPSocket();
        self.data.udp.bind(7788);
        console.log('连接成功');
        self.data.udp.send({
          address: self.data.address,
          port: 6688, //你需要发送的端口号
          message : self.data.key+"("+this.data.ip+","+self.data.port+")" //你需要发送的信息
        })
    ——————————————————————python
    # coding=utf-8
    
    from socket import *
    from threading import Thread
    
    class UDP:
        # 1. 创建udp套接字
        udp_socket = socket(AF_INET, SOCK_DGRAM)
        def __init__(self,ip):
            self.ip = ip
            self.havemand = False
            self.mand = ''
            # 2. 准备接收方的地址
            # '192.168.1.103'表示目的ip地址
            # 8080表示目的端口
            self.dest_addr = (self.ip, 7788)  # 注意 是元组,ip是字符串,端口是数字
            print(self.dest_addr)
            self.udp_socket.bind(("", 6688))
        def send(self,send_data):
        #     while 1:
        # # 3. 从键盘获取数据
        #
        # # 4. 发送数据到指定的电脑上的指定程序中
            self.udp_socket.sendto(send_data.encode('utf-8'), self.dest_addr)
        #
        #
        # # 5. 关闭套接字
        #     self.udp_socket.close()
    
        def recp(self):
            while 1:
                content, client_info = self.udp_socket.recvfrom(1024)
                self.havemand = True
                print("%s(%d)>>>%s" % (client_info[0], client_info[1], content.decode("utf-8")))
    udp = UDP('192.168.226.250')
    thread2 = Thread(target=udp.recp)
    udp.send("('192.168.226.16',6688)")
    thread2.start()
    


    2022-11-29
    有用
    回复
  • 轻尘技术
    轻尘技术
    2019-12-31

    我遇到了同样的问题。微信版本7.0.10。基础库是2.10.0。使用的代码就是范例中的2句话。

    1,

    const udp = wx.createUDPSocket()

    这句在开发工具和真机调试都不会报错。但是返回的结果不同。真机调试时返回的结果如下:

    可能正是因为在真机中默默地返回了一个非正常的socket,导致下面一句bind报错了。

    2,udp.bind()

    这句代码,在开发工具中可通过,并且后续发送消息正常。在真机调试时过不了,报上图的错误。


    手机试了3款都一样,iphone6,三星note,华为。也没有其他信息可以调试,实在是没招了。

    我的直觉,是wx.createUDPSocket()内部的处理有问题,但是我没有证据。希望微信开发团队和路过的大侠能救助一下,指一条明路。


    2019-12-31
    有用
    回复 1
    • 轻尘技术
      轻尘技术
      2020-01-02
      更正。我的问题和楼上不一样。在其他提问评论中翻到了答案。真机调试暂不支持,换成预览,果然可以发送,问题解决。之前一直没注意真机调试和预览有什么区别,往后要注意了。希望能帮到后来人吧。
      2020-01-02
      回复
  • C.
    C.
    2019-08-22

    模拟器基础库版本是2.8.0的能正常发送消息,真机调试不行报错,难道是移动设备基础库版本太低的原因吗?求解


    2019-08-22
    有用
    回复 4
    • C.
      C.
      2019-08-22
      是手机微信没有升级,但是真机调试还是不行,报 “Cannot read property 'bind' of undefined“,只能在模拟器发送消息
      2019-08-22
      回复
    • 2019-08-22回复C.
      UDP需要基础库2.7.0以上
      2019-08-22
      回复
    • C.
      C.
      2019-08-22回复
      基础库是2.8.0的,真机调试报 “Cannot read property 'bind' of undefined“
      2019-08-22
      1
      回复
    • brengthdom
      brengthdom
      2019-08-22回复C.
      我是用预览可以
      2019-08-22
      回复
  • brengthdom
    brengthdom
    2019-08-15

    麻烦指导一下,多谢了

    2019-08-15
    有用
    回复
登录 后发表内容
问题标签