簡體   English   中英

套接字的Objective-C NSMutableArray?

[英]Objective-C NSMutableArray of sockets?

我想在ArrayList / NSMutableArray中存儲幾個套接字,但是套接字的類型為int,而NSMutableArray僅接受對象(id)。 是否有我可以用作套接字容器的另一種數據類型? 我不確定會有多少個條目,因此我希望數據容器像一個ArrayList。

謝謝!

編輯:我嘗試將套接字作為NSNumber發送,但是當我嘗試使用套接字發送消息時,它不起作用並導致XCode崩潰。

您應該將文件描述符包裝在NSFileHandle實例中,它們將在NSArray等集合對象中發揮NSArray ,並設計為用於包裝套接字等文件描述符。 它們還允許您將標准Foundation類型(例如NSData )與您的通信一起使用。

int s = socket(AF_INET, SOCK_STREAM, 0);

if (s != -1)
{
    // bind or connect to address

    NSFileHandle *mySock = [[NSFileHandle alloc] initWithFileDescriptor:s closeOnDealloc:YES];

    [myMutableArray addObject:mySock];
}

請注意, NSFileHandle還提供了方便的方法來異步接受連接以及異步I / O。 您可以使用fileDescriptor方法獲得原始文件描述符。

您可以將int包裝在NSNumber中,如下所示:

NSNumber *socket = [NSNumber numberWithInt:socketInt];
[myArray addObject:socket];
NSNumber *getSocket = [myArray objectAtIndex:0];
int getSocketInt = [getSocket intValue];

這里更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM