level 4
z东方
楼主
2.4、recv方法组有四个方法:
第一个方法num = net.recvNum(),无参数,返回本次接收过程所占用的资源ID号。
第二个方法net.recv(num),参数资源ID号,功能是启动接收过程。该方法受net.timeout(t)的设置控制,如果t毫秒内没有收到数据,会自动再次
尝试,最多尝试5次大约最多耗时(5*t)毫秒,退出接收过程;如果期间收到数据包,立即结束接收过程,并返回-1。
第三个方法net.recvOK(num),参数是资源ID号,功能是检测recv过程是否结束,正处于接收中返回0,接收到数据包返回-1。
第四个方法net.recvRead(num),参数是资源ID号,功能是读取接收到的数据,读出的是一个包含两项的列表。第一项为-1表明接收失败(超时),
第一项为0表明收到数据包,此时,列表的第二项就是收到的数据(字符串)。
注意:单次接收的字节数不能超过1024个字节,如果接收的内容超出限制,将出现内存泄露。
示例:
num = gui.recvNum() # 申请接收资源
net.recv(num) # 启动接收过程
where net.recvOK() != -1 # 等待本次接收过程结束
{
PowerDown(3) # 低功耗设置
# 可以在这里添加代码,利用等待期间执行其它工作
}
x = net.recvRead() # 读取接收结果,释放资源,不论是否需要结果,都必须读取,否则资源无法释放。
if x[0] == -1 # 表明5*t毫秒内未收到数据
{
print("大约5*t毫秒内未收到数据\n")
}
else
{
print("本次收到的数据包内容:%\n",x[1]) # 读取的列表中的第二项内容是收到的数据
}
2025年01月31日 11点01分
1
第一个方法num = net.recvNum(),无参数,返回本次接收过程所占用的资源ID号。
第二个方法net.recv(num),参数资源ID号,功能是启动接收过程。该方法受net.timeout(t)的设置控制,如果t毫秒内没有收到数据,会自动再次
尝试,最多尝试5次大约最多耗时(5*t)毫秒,退出接收过程;如果期间收到数据包,立即结束接收过程,并返回-1。
第三个方法net.recvOK(num),参数是资源ID号,功能是检测recv过程是否结束,正处于接收中返回0,接收到数据包返回-1。
第四个方法net.recvRead(num),参数是资源ID号,功能是读取接收到的数据,读出的是一个包含两项的列表。第一项为-1表明接收失败(超时),
第一项为0表明收到数据包,此时,列表的第二项就是收到的数据(字符串)。
注意:单次接收的字节数不能超过1024个字节,如果接收的内容超出限制,将出现内存泄露。
示例:
num = gui.recvNum() # 申请接收资源
net.recv(num) # 启动接收过程
where net.recvOK() != -1 # 等待本次接收过程结束
{
PowerDown(3) # 低功耗设置
# 可以在这里添加代码,利用等待期间执行其它工作
}
x = net.recvRead() # 读取接收结果,释放资源,不论是否需要结果,都必须读取,否则资源无法释放。
if x[0] == -1 # 表明5*t毫秒内未收到数据
{
print("大约5*t毫秒内未收到数据\n")
}
else
{
print("本次收到的数据包内容:%\n",x[1]) # 读取的列表中的第二项内容是收到的数据
}