发现问题,内置函数塞拉利昂无线“wip_close(data_channel)”没有被正确关闭线标准。
该软件将通过在FTP服务器上放置一个命名文件开始 - 0字节。
数据包似乎发送成功。
当逼抢使用FTP,你必须确保连接正确关闭,否则会出现所有的数据包将被丢弃的数据通道。
0字节仅仅是因为在传输数据包之前文件被放置在那里。
对于希望更详细其他山脉无线用户,见下文:
原始编码:
handle_events_on_FTP_channel(){
case WIP_CEV_OPEN:
wip_putFile(control_channel,x,x,x)
break;
case WIP_CEV_PEER_CLOSE:
wip_close(data_channel);
data_channel = NULL;
wip_close(control_channel);
control_channel = NULL;
break;
}
修改代码:
handle_events_on_FTP_channel(){
case WIP_CEV_OPEN:
wip_putFile(control_channel,x,x,x)
break;
case WIP_CEV_PEER_CLOSE:
wip_close(data_channel);
data_channel = NULL;
wip_close(control_channel);
control_channel = NULL;
break;
case WIP_CEV_DONE:
wip_close(control_channel);
break;
}
原始编码:
handle_events_on_data_channel(){
case WIP_CEV_WRITE:
wip_write(data_channel,x,x)
if(ALL_DATA_TRANSMITTED){
wip_close(data_channel);
data_channel = NULL;
wip_close(control_channel);
control_channel = NULL;
}
break;
}
修改代码:
handle_events_on_data_channel(){
case WIP_CEV_WRITE:
wip_write(data_channel,x,x)
if(ALL_DATA_TRANSMITTED){
wip_shutdown(data_channel,FALSE,TRUE) //Channel, Input, Output
}
break;
case WIP_CEV_PEER_CLOSE:
wip_close(data_channel);
data_channel = NULL;
}
n.b.代码被修改为最小化,而不是字符与演示相同,但足以在此进行必要的修改。
你没有给我们任何信息来帮助我们诊断你的问题。没有相关的代码,没有描述系统... – Ross 2014-10-31 18:01:08
无线传输错误可能是由于多种原因造成的。有关您的设置和应用程序/软件体系结构的说明可以帮助解决问题。 – 2014-10-31 18:39:29
听起来像你需要修改服务器以保存部分结果,或者更好地更改机制。尝试使用更简单的方法,而不是FTP,只需记录每个数据块的大小即可。有一个好的重试确认和重试机制,以便尽快重新建立连接。 – 2014-10-31 19:00:27