2014-02-21 2 views
1

Я просмотрел классы, которые кажутся релевантными, но неясно, существует ли эквивалент класса для трубы, который предназначен для сокетов TCP/UDP. Описание класса Socket, похоже, не просто делает то, что вам нужно для создания и привязки порта, и настройки прослушивания. На данный момент я реализовал это в простых сетевых примитивах unix ... но было бы неплохо, если бы я Socket был действительно тем же API, что и Pipe.Каков стандартный способ IP-сети в GNUstep?

Как другие справляются с этим? Я ошибаюсь в том, что делает Socket?

Это случай, когда мне не нужна сложность, просто стандартная обложка OO для стандартной IP-сети.

ответ

1

Я не использовал GNUstep через некоторое время, поэтому это основано на библиотеках Apple, и вам нужно будет убедиться, что нет различий.

TCP-соединения могут быть созданы с использованием метода класса на NSStream, который возвращает поток ввода и выходной поток для связи.

NSHost *host = ...; 
NSUInteger port = ...; 
NSInputStream *input; 
NSOutputStream *output; 
[NSStream getStreamsToHost:host port:port inputStream:&input 
             outputStream:&output]; 

Для других соединений, вы можете создать соединение, используя стандартный Unix API, а затем создать NSFileHandle обернуть дескриптор файла.

int fd = socket(...); 
NSFileHandle *fileHandle = [[NSFileHandle alloc] initWithFileDescriptor:fd 
                 closeOnDealloc:YES]; 
+0

да последний я проверил, они имели довольно хорошее соотношение в фундаменте, но это было как 8 лет назад ... но все, что материал был в фундаменте 8 лет назад, так что ... Я думаю, что все, что вы пишете с этим слоем должно быть почти то же самое в OS X или GnuStep –

+0

Могут ли два порта быть одинаковыми? У меня есть протокол уровня приложения, который возвращает ACK или NAK msg в зависимости от успеха удаленной операции. (и он работает достаточно хорошо с unix-звонками, поэтому я не хочу ничего менять. –

+0

@DaleAmon, если у вас хороший портативный код posix, тогда не переписывайте его с помощью оберток NSBlahBlah ... вы не получите ничего. –