如何计算发送/接收的字节数,包括iOS HTTP连接中的TCP / IP开销?

时间:2012-10-25 18:00:34

标签: ios nsurlconnection tcp-ip

我正在使用NSURLConnection与服务器进行HTTP通信。我希望找出我的应用程序发送/接收的确切字节数,包括TCP / IP开销。 经过大量研究后,未发现有关如何实现这一目标的任何有用信息。

我愿意切换到CFStream,如果使用它将帮助我解决这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:4)

在控制器的.h中,我声明了两个变量:

NSMutableData *_data;
float downloadSize;

也不要忘记.h

中的代表
@interface SomeViewController : UIViewController <NSURLConnectionDataDelegate, NSURLConnectionDelegate>

然后在我的.m:

- (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response
    {
        NSInteger statusCode_ = [response statusCode];
        if (statusCode_ == 200) {
            downloadSize = [response expectedContentLength];
        }
    }
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        if(!_data) _data = [[NSMutableData data]init];
        [_data appendData:data];
        progressView.progress =  ((float) [_data length] / (float) downloadSize);
    }

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
          unsigned char byteBuffer[[_data length]];
          [_data getBytes:byteBuffer];
          [_data writeToFile:pdfPath atomically:YES];

    }

这是我的控制器下载pdf文件。但它可能是真的。当它有响应时,它会得到预期的长度,然后每次收到数据时,它会将它附加到我的可变数据中,然后将其与预期的大小进行比较。

希望这会有所帮助:D