Ciao ragazzi,
ho un problema riguardante l'utilizzo del ServerSocket...
In pratica sto cercando di fare una semplicissima app che apre una ServerSocket e rimane li in ascolto, in attesa di una connessione...poi eventualmente riceve una stringa e la stampa.
Il meccanismo è molto semplice, appena viene cliccato un bottone, viene creato un Thread(che si occupa di gestire la ServerSocket) e richiamato il suo rispettivo metodo start()...ecco il codice del metodo che cattura il click del bottone:
1public void onClickRiceviStringa(View view){
2WorkerThreadServer thread = new WorkerThreadServer();
3thread.start();
4
5}
e del thread che viene creato:
221public class WorkerThreadServer extends Thread{
2final String LOG = "classe WorkerThreadServer";
3
4public void start(){
5Log.i(LOG,"inizio metodo start");
6super.start();
7}
8public void run(){
9Log.i(LOG,"inizio metodo run()");
10ServerSocket serverSocket = null;
11Socket s = null;
12try{
13serverSocket = new ServerSocket(10324);
14Log.i(LOG,"socket istanziata!");
15while(true){
16Log.i(LOG,"In attesa di connessione.....");
17s = serverSocket.accept();
18Log.i(LOG,"Connessione ricevuta!!");
19
20}//fine while
21}catch(Exception e){Log.e(LOG,"Eccezione: "+e.toString());}
22}
In pratica il problema è che il thread si blocca sul comando "s = serverSocket.accept()" in attesa di ricevere una connessione, ma anche se gli invio comandi tramite un client, non li riceve e rimane sempre bloccato li. Infatti stampa il Log "In attesa di connessione..." ma non stampa mai il Log "Connessione ricevuta!".....
Il client è una semplicissima applicazione java, ecco il codice se può essere utile:
x1public class Client{
2public static void main(String[]args){
3Socket socket = null;
4DataOutputStream dataOutputStream = null;
5DataInputStream dataInputStream = null;
6try {
7socket = new Socket("192.168.1.3", 10324);
8dataOutputStream = new DataOutputStream(socket.getOutputStream());
9dataInputStream = new DataInputStream(socket.getInputStream());
10dataOutputStream.writeUTF("Questa e’ una prova");
11} catch(UnknownHostException e) {
12} catch (IOException e) {
13} finally{
14if (socket != null){
15try {
16socket.close();
17} catch(IOException e) {
18} } if(dataOutputStream != null){
19try {
20
21dataOutputStream.close();
22} catch (IOException e) {
23} }
24if (dataInputStream != null){
25try {
26dataInputStream.close();
27} catch (IOException e) {
28} } }
29
30
31}}
Inoltre la stessa app ha anche un altro bottone che se cliccato apre una Socket e invia una stringa e un'altra semplicissima applicazione java che funge da server(molto simile a questa client che ho postato) la riceve correttamente.....
Vi chiedo gentilmente se sapete quale potrebbe essere il problema...![]()