2016-04-30 36 views
0

GCDAsyncSocketを使用してアプリケーションに画像を送信します。画像が大きいので、sortというNSMutablearrayを保存する多数の小さなパケットにデータを分割します。連続してudpパケットを送信する方法GCDAsyncUdpSocket

GCDAsyncUdpSocket *sendSocket; 
sendSocket = [[GCDAsycUdpSocket alloc] initwithDelegate:self delegateQueue:dispatch_get_main_queue()]; 
for(int i = 0;i < sort.count; i++) 
{ 
    [sendSocket sendData:[sort objectAtIndex:i toHost:@"239.1.1.110" port:46110 Timeout:-1 tag:1]; 
} 

しかし、すべてのパケットが送信が近すぎる、次のように、ほとんどのパケットはlose.Toこの問題を解決するため、私はコードの行を追加します。

GCDAsyncUdpSocket *sendSocket; 
sendSocket = [[GCDAsycUdpSocket alloc] initwithDelegate:self delegateQueue:dispatch_get_main_queue()]; 
for(int i = 0;i < sort.count; i++) 
{ 
    [sendSocket sendData:[sort objectAtIndex:i toHost:@"239.1.1.110" port:46110 Timeout:-1 tag:1]; 
    [Thread sleepForTimeInterval:0.003f]; 
} 

その結果、それは私のアプリケーションが奇妙になりだから私はすべての送信にtimeIntervalを追加する他の方法を知りたい。助けていただきありがとうございます、事前に多くのおかげです。 GCDAsyncudpSocket.mで

答えて

0

  if (socketError.code == ENOBUFS) { 
       [self notifyDidNotSendDataWithTag:currentSend->tag dueToError:[self errnoErrorWithReason:@"Buffer Full"]]; 
       [self endCurrentSend]; 
       [self maybeDequeueSend]; 
       usleep(10000); 
      } 
このコードを使用
関連する問題