2010-11-24 2 views
1

Что было бы самым эффективным способом (то есть наилучшим соотношением усилий и удобочитаемости и ремонтопригодности) для установления TCP-соединения или отправки дейтаграмм UDP на Mac и iPhone? Я очень хорошо знаком с классическими сокетами BSD, но сейчас я не нацелен на переносимость; Я просто пытаюсь быстро выполнить небольшой проект.Самый эффективный способ создания сетей на Mac/iPhone?

Мне очень хотелось бы иметь оболочку Objective-C, снабженную Apple, но я хотел бы услышать некоторые мысли о том, что люди обычно делают. Если вы считаете, что сокеты BSD - это способ пойти, не стесняйтесь пробивать себе некоторые мысли: я действительно просто заинтересован в том, чтобы найти «правильный путь» для этого.

Давайте предполагать, протокол будет обычай один, так что наши потребности не могут обслужить какао на основе HTTP-клиента классов :)


Моя текущая цель заключается в поток состояния устройства (например, акселерометр) над сеть через UDP, одновременно поддерживая соединение с протоколом передачи и гарантированного доставки (например, нажатие кнопки) по TCP. Этот статус будет отображаться на настольном приложении.

Однако мое текущее заявление - вот что заставило меня задать вопрос; Мне интересно, что люди вообще делают. Когда я последний раз серьезно работал с VB6 около 7-8 лет назад, элемент управления WinSock ActiveX делал нечто немного отличное от того, что делается с сокетами BSD, независимо от того, что он сделал под капотом.

ответ

6

Для сетей, простой ответ,

(1) ASIHttpRequest ........ Примечание - это QA очень старый. К сожалению, ASIHttpRequest имеет исторический интерес и больше не доступен.

(2) AsyncSocket

(3) Когда вы начинаете ... GameKit (ребенок может использовать его)

(4) Просто используйте Bonjour (две строки кода), чтобы найти другие устройства.

«Предоставленная Apple оболочка Objective-C» ... AsyncSockets (написанная первоначально таинственным Дастином Дж.Voss) ТАК ХОРОШО, что Apple просто не будет пытаться написать один!

AsyncSockets - это именно то, что вам нужно. Он используется повсеместно в 300 000 iFone-приложениях. Это «есть» сеть на iFone. Надеюсь, поможет.

СНОВА ПРИМЕЧАНИЕ - этот QA очень старый. Теперь вы можете легко найти «современные версии» программного обеспечения, такие как AsyncSockets.

BTW, ничего не стоит, что нет абсолютно ничего плохого - вообще-то с помощью GK .. производительность может быть впечатляющей. О единственном недостатке в том, что спаривание просто занимает много времени с GK. И это детский беспорядок, созданный для десятилетнего обучения программированию. Вы сможете сделать 100-кратное более быстрое соединение, работая непосредственно с AsyncSockets.

Возможно, вы предпочтете использовать какой-нибудь игрушечный код GK, пока вы выясняете Bonjour и все такое.

Я бы предположил, что консенсус мнения заключается в том, что нет смысла работать на еще более низком уровне (то есть с сырыми сокетами), чем AsyncSocket .. там не так много производительности.

ПРИМЕЧАНИЕ. Если вы новичок в gamekit/iOS, обязательно прочитайте этот критический отзыв!
Client/Server GKSessions

надеюсь, что это поможет.

1

На ваш вопрос нельзя ответить ни на какие вопросы, потому что вы не описали, что хотите. Лучший ответ, который я могу дать, - прочитать вступительные сетевые руководства для Mac и iOS.

Update

Я не думаю, что есть «легкий путь какао» встроенный для UDP. Я помню, что это обсуждение появилось несколько раз в списке какао-дев. Проект cocoaasyncsocket упоминается в разных местах. Он утверждает:

AsyncUdpSocket является UDP/IP сокет сетевой библиотеки, которая оборачивает CFSocket. Он работает почти так же, как версии TCP, но рассчитан на специально для UDP. Это включает в себя очереди без блокировки отправки/получения операций, полная поддержка делегатов, основанный на циклах, автономный класс, и поддержка IPv4 и IPv6.

+0

Хотя я до сих пор не считаю мое текущее приложение ужасно важным для моего вопроса, я обновил его с дополнительной информацией. Я знаю CFSockets, я знаю, как делать что-то с сокетами BSD, но мне интересно, какой лучший и простой способ настроить потоки соединений/датаграмм на платформах Apple. Больше вопросов «лучшей практики», чем вопрос «как это сделать». – 2010-11-24 18:36:20

+0

Я понимаю. Я обновил свой ответ, чтобы включить ссылку на класс оболочки UDP. – 2010-11-24 18:47:38

Смежные вопросы