【发布时间】:2012-09-19 17:40:09
【问题描述】:
我创建了一个基于 Socket 的简单聊天应用。 帖子:Socket Based iPhone App 帮助我创建了这个。
我现在想通过套接字发送/接收文件。 请指点我如何实现这一目标。
干杯, 不客气
编辑:
用于连接套接字的代码是:
NSString *aHostName = @"xx.xx.xx.xx";
NSInteger aPort = 1234;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)aHostName, aPort, &readStream, &writeStream);
self.inputStream = (NSInputStream *)readStream;
self.outputStream = (NSOutputStream *)writeStream;
[self.inputStream setDelegate:self];
[self.outputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
[self.outputStream open];
用于发送数据的代码是
NSData *aData = [[NSData alloc] initWithData:[iRequestAPI dataUsingEncoding:NSASCIIStringEncoding]];
[self.outputStream write:[aData bytes] maxLength:[aData length]];
[aData release];
其中,iRequestAPI 是必须发送的字符串。
现在,当我尝试通过套接字发送文件时,考虑到我将文件转换为 NSData 并使用 [self.outputStream write:[aData bytes] maxLength:[aData length]]; 的事实,是否有可能由于连接带宽而无法发送整个文件。
如果没有发送整个文件,如何确保发送其余文件。
这是通过套接字发送文件的正确方法吗? 请建议..
【问题讨论】:
-
这个问题太模糊了。您需要更具体地说明您遇到问题的部分。你知道如何打开和读取文件吗?你知道如何扩展你的协议来支持发送文件吗?
-
不。当涉及到套接字时,我真的不知道与文件处理有关的任何事情。我必须发送的文件保存在应用程序的文档目录中。
-
我问了一个问题,但在任何地方都没有得到令人满意的解释。真的没有看到投反对票的必要性......如果你投了反对票,那么你必须对此有一个很好的答案,或者至少有一个指向解决方案的指针。否决票不是我关心的问题。有人请给我一个解决方案。
-
wtf....当他们投反对票时,您不能发表评论...我确实想知道原因....
标签: iphone ios file sockets ios5