Objective-C NSMutableArray套接字?

has*_*anm 0 sockets iphone arraylist objective-c nsmutablearray

我想在ArrayList/NSMutableArray中存储几个套接字,但套接字的类型为int,NSMutableArray只接受对象(id).是否有其他数据类型可以用作套接字的容器?我不确定我会有多少条目,所以我希望数据容器就像一个ArrayList.

谢谢!

编辑:我已经尝试将套接字作为NSNumber发送,但是当我尝试使用套接字发送消息时,它无法正常工作并导致XCode崩溃.

dre*_*lax 6

你应该在NSFileHandle实例中包装你的文件描述符,这些将在内部集合对象中发挥很好的作用,NSArray并且设计用于包装文件描述符,例如套接字.它们还允许您使用标准基础类型,例如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];
}
Run Code Online (Sandbox Code Playgroud)

请注意,NSFileHandle它还提供了异步接受连接的便捷方法,以及异步I/O. 您可以使用该fileDescriptor方法返回原始文件描述符.