

andtoid端末でグローバルipを用いてudpパケットの通信を行うアプリを作成しています。現状はローカルipを利用したローカル環境では端末間のパケットの通信はできています。しかし、グローバル間だとパケットを受け取ることができません。コードは以下を参考にしています。  
<https://systembash.com/a-simple-java-udp-server-and-udp-client/>  
ルータのポートマッピング（ポート解放）、android端末の静的ipの割当は行っています。  
ちなみに、上記プログラムをpcで動かした場合はグローバル間で通信はできました。  
コードの誤り以外で、環境面などで見落としていることは何かあるでしょうか、ご教授お願いします。

以下、私の環境です。  
携帯端末：Zenfone 2  
Androidのバージョン:6.01(APIレベル23)  
セキュリティアプリ:security master  
ルータ:IODATA（ＷＮ-AG450DGR）

補足  
masmさんの仰るように端末とルータの接続は以下の通りです。  
端末 -- (Wi-Fi) -- ルータ -- (インターネット) -- ルータ -- (Wi-Fi) -- 端末  
グローバルipとポート番号を指定して、通信をさせる予定です。

ネットワーク監視アプリ(net swiss tool
free)でポートの状況を調べたところ、ローカルipを使用したときには問題ないですが、グローバルipを使用したときはポートがクローズされている状況です。

> sayuriさん  
>  双方向です。両端末でパケットの送信と受信スレッドを別々に動かしています。現在はローカルipを使用したときのパケット通信は正常に動いています

以下の点は確認しています。  
・ポート番号のかぶりはない  
・指定している、ip、ポート番号は間違っていない  
・AndroidmManifest.xmlにネットワークを扱うinternetのパーミッションはあたえている

> masmさん  
>  portがクローズされていると判断したのは以下の結果のためです  
>  ローカルip指定時:  
>  portscan tcp(ルータでtcpも解放している)  
>  →結果がopened  
>  udp flood  
>  →アプリ動作  
>  グローバルip指定時:  
>  portscan tcp  
>  →closed  
>  udp flood  
>  →アプリ動作しない  
>  ※このネットワーク監視アプリを使ってグローバルipを利用して、pcで起動している上記サンプルプログラムのポートに対してudp
> floodしたところ、正常に動きました。

補足2  
グローバルipを指定したパケットの送信側は正常にできています。  
※作成中のアプリからpcで起動している上記サンプルプログラムのサーバで受信できたため。


CC BY-SA 3.0
2018-02-13T14:39:11.233
41693
2018-02-21T16:39:50.413
2018-02-17T11:54:08.327
22579
22579
question
android udp
android端末でのudp通信につきまして


詳しい原因は分からないですが以下の結果になりました。

・送受信失敗  
-グローバルip指定  
端末a-- (Wi-Fi) -- ルータa -- (インターネット) -- ルータa -- (Wi-Fi) -- 端末a

・送受信成功  
-グローバルip指定  
端末a-- (Wi-Fi) -- ルータa -- (インターネット) -- ルータa -- (Wi-Fi) -- 端末b

-ローカルip指定  
端末a-- (Wi-Fi) -- ルータa -- (Wi-Fi) -- 端末a

端末a-- (Wi-Fi) -- ルータa -- (Wi-Fi) -- 端末b

まずはじめに、自分の端末で送受信できるかと考えていたので、どつぼにはまってました。

コメントをしてくださった、masmさん、sayuriさんありがとうございます。


CC BY-SA 3.0
2018-02-21T14:18:02.240
41899
2018-02-21T16:39:50.413
2018-02-21T16:39:50.413
22579
22579
41693
answer