[英]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.