2010-11-24 16 views
1

MacとiPhoneでTCP接続を確立したり、UDPデータグラムを送信したりする最も効果的な方法(つまり、読みやすさと保守性の最適な比率)は何ですか?私は古典的なBSDソケットに精通していますが、今は移植性を目指していません。私はちょうど小さなプロジェクトですぐにやり遂げようとしています。Mac/iPhoneでネットワーキングを行う最も効果的な方法は?

アップルが提供しているObjective-Cラッパーが大好きですが、人々の共通していることについて考えてみたいと思います。 BSDソケットが使えると思っているなら、いくつか考えてみてください。私は本当にそれを行う「正しい方法」を見つけることに興味があります。

我々のニーズはココアベースのHTTPクライアントクラスによってサービスを受けることができないので、のは、カスタムの一つであることが、プロトコルを推定してみましょう:)


私の現在の目標は上のデバイスの状態(例えば加速度計)をストリーミングすることですTCPを介したシグナリングおよび配信保証イベント(例えばボタン押下)接続も維持しながら、UDPを介してネットワークを介して送信される。デスクトップアプリケーションはこの状態を表示します。

しかし、私の現在のアプリケーションは私に質問をしてくれました。私は人々が一般的に何をしているのだろうかと思います。私が最後に真剣に7〜8年前にVB6で作業したとき、WinSock ActiveXコントロールは、BSDソケットで行われたこととは少し異なりました。

答えて

6

(1)ASIHttpRequest ........ NOTE - このQAは非常に古いです。残念ながら、ASIHttpRequestは歴史的な関心事であり、もはや利用できません。

(2)AsyncSocket

(3)あなたが出始めている場合は... GameKit(子供がそれを使用することができます)

(4)だけを見つけるためにボンジュール(2行のコード)を使用します他のデバイス。

"Appleが提供するObjective-Cラッパー" ... AsyncSockets(元々は神秘的なDustin J.によって書かれました)ヴォス)は、Appleがちょうど1を書き込もうと気にしないだろうということSO GOODです!

AsyncSocketsあなたは後にしているまさにです。これは300,000のiFoneアプリでどこでも使用されています。それはiFone上のネットワーキングです。それが役に立てば幸い。

はAGAIN注 - このQAは非常に古いです。 AsyncSocketsのような "現代版"のソフトウェアを簡単に見つけることができます。

ところで、それは何も間違っては絶対に存在しないことは何も価値がある - すべてで - ちょうどGK使って..パフォーマンスが壮観することができます。唯一の欠点は、ペアリングが単純にGKで長い時間がかかることです。そして、それはプログラミングを学ぶ10歳のために作られた幼稚な混乱です。 AsyncSocketsを使用して100倍高速のペアリングを直接行うことができます。

あなたがBonjourのを把握し、すべてのことながら、いくつかのおもちゃのGKコードを使用することもできます。

私は、AsyncSocketよりも低いレベル(すなわち、生のソケット)で作業している点はないと考えています。そこにはパフォーマンスはあまりありません。

NOTE - あなたはgamekitを初めて使用する場合は/ iOSのは、この重要なヒントをお読みください!
Client/Server GKSessions

希望します。

+0

ありがとう!ちょうどコメント、GameKitを使うアドバイスはOS Xではあまり役に立ちません:-)そして、私はBonjourをBSDソケット、AppleのCFNetwork、NSStreamと組み合わせて使用​​しました。 –

1

あなたが何をしたいのか記述していないため、あなたの質問には本当に詳細は答えられません。私が与えることができる最高の答えは、MaciOSの入門用ネットワークガイドを読むことです。

更新

私はUDPのための内蔵任意の「簡単なココアの道」はないと思います。私は、この議論がココア開発者リストに数回出てきたことを思い出しています。 cocoaasyncsocketプロジェクトは様々な場所で言及されています。それは主張:

AsyncUdpSocketが CFSocketをラップUDP/IPソケット ネットワーキングライブラリです。 TCPバージョンの とほぼ同じように動作しますが、特にUDPの場合は となっています。これには、 キューイング非ブロック送受信送受信 操作、フルデリゲートサポート、 実行ループベースの自己完結型クラス、 およびIPv4とIPv6のサポートが含まれます。ネットワーキングのために、簡単な答えはあり

+0

私の質問に対して、現在のアプリケーションが非常に重要であるとはまだ考えていませんが、私はそれをさらに詳細に更新しました。私はCFSocketsを知っています。私はBSDソケットを使って何かをする方法を知っていますが、Appleプラットフォーム上で接続/データグラムストリームを設定する最も簡単で簡単な方法は何か疑問です。 「これを行う方法」の質問よりも「ベストプラクティス」の問題が多い –

+0

私は理解しています。私は、UDPラッパークラスへの参照を含めるように答えを更新しました。 –

関連する問題