菜鸟教程小白 发表于 2022-12-13 11:49:51

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 = @&#34;xx.xx.xx.xx&#34;;
NSInteger aPort = 1234;

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)aHostName, aPort, &amp;readStream, &amp;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 &lt; totalLen) {
      if () {
            int indexLen =(1024&gt;(totalLen-index))?(totalLen-index):1024;

            (void)memcpy(buffer, readBytes, indexLen);

            int written = ;

            if (written &lt; 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]
查看完整版本: iphone - 通过 Socket 发送文件 (iOS)