こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MacとiOSアプリでのソケット通信について

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

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

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

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

投稿日時 - 2013-12-24 10:41:18

QNo.8398920

すぐに回答ほしいです

質問者が選んだベストアンサー

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

まずは、この点を確認してみてください。

投稿日時 - 2013-12-24 13:49:57

お礼

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

投稿日時 - 2013-12-24 16:19:27

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

回答(2)

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

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

 もしかして、あなたは、

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

 が、

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

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

 まず、

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

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

投稿日時 - 2013-12-24 12:11:49

補足

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

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

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

投稿日時 - 2013-12-24 14:56:37

お礼

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

投稿日時 - 2013-12-24 16:19:57

あなたにオススメの質問