iPhoneネットワークプログラミング
はじめに
iPhoneプログラミングに関する筆者の前回の記事では、iPhoneアプリケーション内からWebサービスを利用(consume)し、そこから返されるXMLデータを解析する方法について考察しました。Webサービスは今とても流行っているものの、Webサービスを利用するために必要とされるペイロードはかなり大きく、わずかなデータを取り出したいだけの場合は無駄が多いように感じられます。問題は、SOAPパケット自体が多くのバイト数を消費することです。そこで、これに代わる方法としてソケットを利用することを考えます。ソケットを使えば、余分なXMLペイロードなしに情報をやり取りすることが可能です。また、サーバとの接続が確立した状態を維持できるので、アプリケーションを非同期で動かして、送られてきたデータを必要なときだけ受け取るようなことも可能です。
本稿では、TCP/IPを使用してサーバと通信する方法を学びます。また、筆者が以前書いた記事の中で述べたアイデアを使って、簡単なチャットアプリを作ります。
本稿のサンプルプロジェクトでは、Xcodeを使用し、新規のView-based ApplicationプロジェクトをNetworkという名前で作成します。
ストリームによるネットワーク通信
ネットワーク上でソケットを使用して通信するときはNSStreamクラスを使うのが簡単です。NSStreamはストリームを表す抽象クラスで、これを使ってデータを読み書きできます。このクラスはメモリ、ファイル、ネットワークに対して有効です。NSStreamクラスを使うと、NSStreamオブジェクトに対してデータを読み書きするだけでサーバと通信できます。
Mac OS Xでサーバとの接続を確立するには、NSHostオブジェクトとNSStreamオブジェクトを次のように使います。
NSInputStream *iStream;
NSOutputStream *oStream;
uint portNo = 500;
NSURL *website = [NSURL URLWithString:urlStr];
NSHost *host = [NSHost hostWithName:[website host]];
[NSStream getStreamsToHost:host
port:portNo
inputStream:&iStream
outputStream:&oStream];
http://japaninternetcom.pheedo.jp/click.phdo?i=c7414e2aa4db474fe2013b376434f339
「焼け石に水」ということわざがありますね。
焼けた石に少しくらい水をかけても冷たくならないように、少々の事では
意味が無く役に立たない事のたとえですね。
いやー、焼け石に水、こんな状況がどんだけあった事か、、、、ww
PICKUP
誕生日デコメを送る楊貴妃東京メトロ有楽町線市ケ谷駅弁護士を装った詐欺/詐欺被害を防ぐ救済!!取立てストップ!? 個人民事再生クロカンブッシュ誕生日デコメを送る学園乙女ゲーム身近な税理士を探す[札幌市]カバラ 占いPR