Salve a tutti,
in poche parole sto provando a fare un mini programmino che comunica tramite socket. Sul mio pc fisso ho già un server scritto in java che comunicava tramite socket e stavo provando in pratica a sviluppare un client da far girare sul mio tablet android 3.0 che comunichi con il server che ho sul pc.
Ho provato a scrivere poche righe di codice sfruttando le librerie standard del java:
codice:
package com.neptune.prova3;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import com.neptune.prova3.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class Android3Activity extends Activity {
/** Called when the activity is first created. */
private ObjectOutputStream out;
private ObjectInputStream in;
private InetAddress addr;
Socket socket;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Connessione al server
try {
// indirizzo riservato al localhost 127.0.0.1
addr = InetAddress.getByName("192.168.1.101");
} catch (UnknownHostException e1) {
e1.printStackTrace();
((TextView) this.findViewById(R.id.textView1)).setText(e1.getMessage());
}
try {
socket = new Socket(addr, 8085);
//out = new ObjectOutputStream(socket.getOutputStream());
//in = new ObjectInputStream(socket.getInputStream());
((TextView) this.findViewById(R.id.textView1)).setText("CREATO IL SOCKET");
} catch (IOException e1) {
e1.printStackTrace();
socket = null;
((TextView) this.findViewById(R.id.textView1)).setText(e1.getMessage());
}
}
}
Ma mi sollevava l'eccezione Access Denied, quindi documentandomi su internet ho visto che bisognava abilitare i permessi nel file Manifest, nella fattispecie i permessi per internet, ho quindi modificato il mio file manifest in questa maniera:
codice:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.neptune.prova3"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Android3Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
nella fattispecie ho aggiunto la seguente riga:
codice:
<uses-permission android:name="android.permission.INTERNET" />
aggiungendo questa riga però il programma appena avviato crasha.
Non riesco proprio a capire da cosa dipenda, contando tra l'altro la semplicità del programma. Avete qualche idea a riguardo?
Vi ringrazio in anticipo,
Neptune.