1

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

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

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

ここに簡単な写真があります。ありがとう、MSペイント。 サーバー接続

前もって感謝します、ジェームズ

4

1 に答える 1

1

ローカル サーバーとリモート サーバーの両方を制御する場合、HTTP 1.1 が使用され、接続で「Keep-Alive」ヘッダーが使用されることを確認できます。

また、有効な双方向接続のセマンティクスをエミュレートするためのXMMP バインディングも役立つ手法です。

サーバーを制御できない場合、Keep-Alive は永続的または長期的な接続をサポートするために適切に導入されたので、少し独りよがりになるのではないかと思います。

この場合、接続を開いたままにしておくための唯一のオプションは、ある種のポーリングだと思います。つまり、iPhone が 1 つのサーバーからの応答を待っている間、n 秒ごとに別のサーバーに要求を送信します。 n がサーバー接続タイムアウトを下回っています。

このアプローチは、サーバーが応答の送信後にすぐに接続を閉じない場合にのみ機能します。

于 2011-07-29T17:48:02.867 に答える