iPhone(またはiPod)から別のiPhone(またはiPod)に標準的なTCP接続を行う必要があるIOSアプリケーションを開発します。接続は、シミュレータとデバイス上のアプリケーション間、および2台のシミュレータ間でうまく機能します。同じサブネット内のiosからiosデバイスへの接続()
アプリケーションは、POSIXを使用(接続)し、他のモジュールがC.
接続()アプリケーションブロックを呼び出し、タイムアウトエラーが返された後の場合に純粋であるので、私は、この方法に固執しなければなりません。 通信はLAN内の無線LAN経由です
私はトラフィックを傍受し、シミュレータに接続した後、デバイスがARPを送信し、応答後に標準のTCPハンドシェイクが行われ、セッションが確立されました。
iPhoneと同じ場合<> iPhoneはARPリクエスト後に停止します。別のiPhoneが応答しないためです。さらに、iOSはgratuitous ARPだけを送信します(MACのIPペアを発表します)。私のMACはこのARPテーブルがiPhoneレコードを持っているので、このリクエストを進めるように思えます。それは別のiPhoneでは動作しません。
私はbonjourサービスを試しましたが、シミュレータ<>デバイスでも動作します。
私の質問: このような通信を許可する方法はありますか?それは私のiPhoneでのみ問題である可能性がありますか? OSにアルプスの応答を送るようにOSに明示的に指示するか、それとも何らかの理由でトラフィックがブロックされていますか?<> iosの通信。
私はARPが赤ちゃんだと思っています。あなたは、他のデバイスのIPをどのように見つけるかについて詳しく説明できますか?接続を確立する前にブロードキャストパケットを使用しない限り、ピアデバイスのIPアドレスを実際に知ることはできません。間違ったIPアドレスのために、ARPは設計上失敗します。 –
私の例では、他のデバイスのIPを知っています。接続したいときに問題が発生します(ピアIPのMAC用にARP(iPhoneへ)を送信し、応答がない - >タイムアウト後にエラーが返されます)。 MACから接続するときは、ARPはありません。MACキャッシュは無償のARPメッセージで、SYNだけを送信するためです。 – macvek