Cocoa 简单FTP示例-连接关闭会导致文件被删除

Cocoa 简单FTP示例-连接关闭会导致文件被删除,cocoa,file-upload,ftp,corruption,Cocoa,File Upload,Ftp,Corruption,我已经采取了苹果的简单FTP样本,并编辑它,以我的需要。(未更改上载部分) 它报告说上传顺利,文件确实在FTP上,但如果我下载并打开文件(主要是jpg图像),我会收到错误消息,文件已损坏 我唯一改变的是,当传输完成时,连接被强制关闭,等待其他上传的状态保持活跃 我认为程序正在将最后一块数据分配给上传流,一旦完成,它就假定它已经完成,而不等待流上传最后一块数据。。可能吗?有没有办法查看networkstream(outputstream)的缓冲区中是否有数据?我似乎只能为inputstream而不

我已经采取了苹果的简单FTP样本,并编辑它,以我的需要。(未更改上载部分)

它报告说上传顺利,文件确实在FTP上,但如果我下载并打开文件(主要是jpg图像),我会收到错误消息,文件已损坏

我唯一改变的是,当传输完成时,连接被强制关闭,等待其他上传的状态保持活跃

我认为程序正在将最后一块数据分配给上传流,一旦完成,它就假定它已经完成,而不等待流上传最后一块数据。。可能吗?有没有办法查看networkstream(outputstream)的缓冲区中是否有数据?我似乎只能为inputstream而不能为outpustream这样做

更新:在使用十六进制编辑器将上传的文件与原始文件进行比较后,我发现这些文件是相同的,只是上传的文件的最后一部分被切掉了。切掉的部分并非总是大小相同。它在0到256 kb之间变化

更新2:
NSLog(@“ntstrm:%zu”,self.networkStream.streamStatus)
即使在上传时,也始终返回2。上传时应该返回4!然后在关闭后返回0。但从来没有4

更新3: 到目前为止,我找到的唯一解决方案是安装一个计时器,在我关闭连接之前等待15秒。但这不是我想做的事情,因为我以前上传很多文件的程序,如果每个文件我必须停止15秒,那将是一个巨大的痛苦。
感谢您的帮助。

由于缺少任何代码片段,提出解决方案并不容易

根据问题描述,这可能与缓冲区未正确刷新有关

我建议您尝试强制立即刷新输出流。也希望使用TCP_节点来实现这一点的人只需在套接字级别设置一些选项:

int yes = 1;
setsockopt(CFSocketGetNative(aSocket), IPPROTO_TCP, TCP_NODELAY, (void *)&yes, sizeof(yes));

希望这能有所帮助。

鉴于这是唯一的答案,我要到今晚才能测试,我给你50英镑奖励,因为它将在3小时后结束。希望这就是我所需要的。我今晚回来报到。。谢谢这似乎是正确的道路!您知道如何将此应用于流吗?我一直在寻找,运气不好。。感谢您的帮助!谢谢。不幸的是,我在这个开发环境中的经验非常有限,因此我无法提供任何其他信息。