Вы должны заключать дескрипторы файлов в экземпляры NSFileHandle
, они будут хорошо воспроизводиться внутри объектов коллекции, таких как 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
также предоставляет удобные методы для приема соединений асинхронно, а также асинхронного ввода-вывода. Вы можете получить исходный дескриптор файла, используя метод fileDescriptor
.