繁体   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