Androidアプリ 通信について
JAVAのカテゴリでご回答が得られなかったのでこちらにも投稿いたします。
タブレット(ICONIA TAB A200 (OS:Android4.0.6))から
無線LANで接続されたPC(SONY製 ネットブック (OS:windows 7 32bit))へ
UDPのパケットを送信しようと考えています。
ボタンを押したら文字列"AAA"を送信するだけのものですがボタンを押しても
PCにデータが届きません。
PC側はフリーでダウンロードしたUDP/IPツールを使っていますが、
これは使用実績がありますので、問題ないかと思います。
他の方が作られたUDPパケット送信アプリを使うとうまく送信できているので、
タブレットが通信できないということはなさそうです。
問題なのはアンドロイドのアプリ側だと考えています。
パケットキャプチャソフトで見ても特にパケットはPCにきていなさそうです。
PCからアンドロイドタブレットへPing(ICMPパケット)を送ると、ちゃんと応答があります。
どこかプログラムでおかしいところ、抜けていること、余計なことがありますでしょうか?
(通信部分に関してお願い致します。)
タブレットのIPアドレス192.168.0.3
PCのIPアドレス192.168.0.5
<アンドロイド アプリ main.java>
package my.Package.Tabtest;
import java.io.IOException;
import java.net.*;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class TabtestActivity extends Activity {
public DatagramSocket ds;
public DatagramPacket dp;
public int i;
private TextView mytv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mytv = (TextView)findViewById(R.id.tv1);
}
public void btn_on(View v){
i++;
mytv.setText(String.format("COUNT:%d",i));
try{
InetSocketAddress remoteAddress = new InetSocketAddress("192.168.0.5",42000);
dp = new DatagramPacket("AAA".getBytes(), 4, remoteAddress);
//Socket の設定,通常の Java と同じ
ds = new DatagramSocket(); //DatagramSocket 作成
ds.send(dp); // try catch で利用
}
catch(Exception e){
i++;
i++;
i++;
}
}
}
<アンドロイド アプリ レイアウトファイル main.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/tv1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PUSH HERE!!!!!!"
android:onClick="btn_on"
/>
</LinearLayout>
お礼
私の使用バージョンだとfromメソッド辺りがエラーとなってしまいますが LayoutInflaterでレイアウトの切り替えが出来ました。 ご回答ありがとうございました!