プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。

現在、MacとiOSでソケット通信をするアプリケーションを作成しています。
http://dev.classmethod.jp/smartphone/ios-socketi …
上記で紹介されているものを参考にし、
http://localhost:3000で動作するnode.jsのアプリケーションと、
XcodeのiOSシミュレータでの通信は確認出来ています。

これをiPhone実機で動作させたいのですが、Mac側と接続できず困っています。
ソース内に書かれているIPアドレスを localhost➡10.2.1.13(MacのIPアドレス)に書き換え、試してみたのですが、接続出来ずにタイムアウトになってしまいます。

IPアドレスを書き換えるだけでは駄目なのでしょうか?
アドバイス頂けたら幸いです。よろしくお願い致します。

A 回答 (2件)

気になるのは、


iPhone実機をWifi経由でMacと同じLANに繋いでテストしているか?
(モバイルデータ通信でキャリア経由で通信してないか?)
という点と、
Macのファイアーウォールでチャットサーバ(ポート#3000)を
外部から接続できるよう許可しているか?
という点です。

まずは、この点を確認してみてください。
    • good
    • 0
この回答へのお礼

ファイアーウォールを無効にしたところ、通信できました。
初歩的な問題でお恥ずかしい限りです。ありがとうございました。

お礼日時:2013/12/24 16:19

実際に、環境が同一なら、シミュレータで動くものは、実機でも動くはずです。



しかし、動かないなら、それは、どこかで、条件が、同じでないわけです。

 もしかして、あなたは、

iOS Simulator - 同一のMac - サーバープログラム            case-1

 が、

iphone - サーバープログラム(Mac) case-2

 で、サーバーアドレス替えただけで、同じと思っているのでしょうか?

 まず、

iOS Simulator(Mac-A) - サーバープログラム(Mac-B or PC) case-3

で、やってみることです。localhostなんてのは、絶対にタイムアウトが発生しない接続先なのですから。

この回答への補足

回答ありがとうございます。

iOSシミュレータ(Mac)とサーバプログラム(WindowsPC)で試した結果、きちんと通信出来ました。
なのでIPやポートの書き方は合っていると思います。そのソースのまま、実行先をiPhone実機に変更して実行してみたのですが、
ERROR: handshake failed ... The request timed out.
とコンソールに出力されてしまいます。

また、試しにWindowsやMacからiPhoneに対してPingを飛ばしてみたのですが、通らず、
これが原因なのかなとも思いました。同一無線LANには接続されているのですが。。

補足日時:2013/12/24 14:56
    • good
    • 0
この回答へのお礼

解決しました。ありがとうございました。

お礼日時:2013/12/24 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!