如下代码可以创建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'
})
先确认下有没有收到任何错误事件
加了bind之后现在能正常发送了了,不知道刚才怎么回事。谢谢
基础库是2.10.1的,真机调试报 “Cannot read property 'bind' of undefined“
手机体验版 进不了 udpSocket.onListening ,无法打印console.log
this.udpSocket.onListening(function (res) {
console.log('udpSocket监听中...')
console.log(res)
我用开发者工具没有问题可以发送也可以收到,但是真机无论是预览还是调试都只能收到无法发送,还不报错
————————————————————————————————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()
我遇到了同样的问题。微信版本7.0.10。基础库是2.10.0。使用的代码就是范例中的2句话。
1,
const udp = wx.createUDPSocket()
这句在开发工具和真机调试都不会报错。但是返回的结果不同。真机调试时返回的结果如下:
可能正是因为在真机中默默地返回了一个非正常的socket,导致下面一句bind报错了。
2,udp.bind()
这句代码,在开发工具中可通过,并且后续发送消息正常。在真机调试时过不了,报上图的错误。
手机试了3款都一样,iphone6,三星note,华为。也没有其他信息可以调试,实在是没招了。
我的直觉,是wx.createUDPSocket()内部的处理有问题,但是我没有证据。希望微信开发团队和路过的大侠能救助一下,指一条明路。
模拟器基础库版本是2.8.0的能正常发送消息,真机调试不行报错,难道是移动设备基础库版本太低的原因吗?求解
麻烦指导一下,多谢了