iphone - 通过 Socket 发送文件 (iOS)
<p><p>我创建了一个基于 Socket 的简单聊天应用。
邮报:<a href="http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server" rel="noreferrer noopener nofollow">Socket Based iPhone App</a>帮助我创建了这个。</p>
<p>我现在想通过套接字发送/接收文件。
请指点我如何实现这一目标。</p>
<p>干杯,
呸呸呸</p>
<p><strong>编辑:</strong></p>
<p>用于连接套接字的代码是:</p>
<pre><code>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;
;
;
forMode:NSDefaultRunLoopMode];
forMode:NSDefaultRunLoopMode];
;
;
</code></pre>
<p>用于发送数据的代码是</p>
<pre><code>NSData *aData = [ initWithData:];
maxLength:];
;
</code></pre>
<p>其中,iRequestAPI 是必须发送的字符串。</p>
<p>现在当我尝试通过套接字发送文件时,考虑到我将文件转换为 NSData 并使用 <code> maxLength:];</code> 可以由于连接带宽的原因,有可能无法发送整个文件。
如果没有发送整个文件,如何确保发送其余文件。 </p>
<p>这是通过套接字发送文件的正确方法吗?
请建议..</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>如果你的 NSData 足够大,你需要把它切成小块。你需要字节来传输它们。例如:</p>
<pre><code>NSData *newData = UIImagePNGRepresentation();
int index = 0;
int totalLen = ;
uint8_t buffer;
uint8_t *readBytes = (uint8_t *);
while (index < totalLen) {
if () {
int indexLen =(1024>(totalLen-index))?(totalLen-index):1024;
(void)memcpy(buffer, readBytes, indexLen);
int written = ;
if (written < 0) {
break;
}
index += written;
readBytes += written;
}
}
</code></pre></p>
<p style="font-size: 20px;">关于iphone - 通过 Socket 发送文件 (iOS),我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/9432327/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/9432327/
</a>
</p>
页:
[1]