2011-07-29 4 views
1

私は2つのサーバー(ホームとリモート)とそのプログラムをiPhone上に持っています。 iPhoneは、プロセス全体が完了するまでポートを開いたままにする必要があります。そうしないと、システム全体が失敗します。Keep Port Open - iPhone

iPhoneは「ホーム」サーバーから(ポスト経由で)一連のデータを取得し、いくつか追加して、ポートストリーム経由で「リモート」サーバーに接続します。ポートが開かれ、データが「リモート」に送信されると、リモートからの応答が返され、「ホーム」に転送されます。一度 "家"がそれを取得すると、それはいくつかのものを変更し、同じ、まだ開いているポートを介して情報を "リモート"に転送する必要があるiPhoneにそれを送り返します。

"リモート"サーバー上のものが変更され、プロセス全体が中断されるため、ポートストリームを閉じてバックアップを開くことができません。

ここは簡単な画像です。ありがとう、MSペイント。事前に Server Connection

おかげで、 ジェームズ

答えて

1

あなたは、ローカルおよびリモートサーバーの両方をコントロールしている場合は、あなたはそのHTTP 1.1が使用されていることを確認し、接続が「キープアライブ」ヘッダーを使用することができます。

また、長寿命の双方向接続のセマンティクスをエミュレートするために、XMMP bindingが役に立ちます。

サーバーを制御できない場合は、Keep-Aliveが永続的または長期間の接続をサポートするために導入されたため、ちょっと気になることがあります。

この場合、接続を開いたままにする唯一のオプションは、何らかのポーリングです。つまり、iPhoneがあるサーバーからの応答を待っている間に、別のサーバーに要求を送信しますn秒、nはサーバーの接続タイムアウトより小さい。

この方法は、サーバーが応答を送信した後すぐに接続を終了しない場合にのみ機能します。

+0

残念ながら、いずれのサーバーでも制御できません。 – Baub

+0

さて、POST接続は私が心配しているのではなく、NSInputStreamとNSOutputStreamです。 – Baub