Autore Topic: Progetto Client(Android)-Server(Java)  (Letto 1175 volte)

Offline Francesco.add

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg 4x hd2
  • Sistema operativo:
    windows 7
Progetto Client(Android)-Server(Java)
« il: 27 Giugno 2013, 12:43:12 CEST »
0
Salve, dovrei realizzare un client su android che si colleghi a un server java; il pc e il terminale android si collegano alla stessa rete. Come posso fare? Se utilizzo le classi java mi da errore

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Progetto Client(Android)-Server(Java)
« Risposta #1 il: 20 Agosto 2013, 17:08:02 CEST »
0
Anche io ho lo stesso problema...Non riesco a fare la comunicazione, questo è il debug:
Codice: [Seleziona]
Thread [<1> main] (Suspended (exception NetworkOnMainThreadException))       
        <VM does not provide monitor information>       
        Socket.startupSocket(InetAddress, int, InetAddress, int, boolean) line: 573       
        Socket.tryAllAddresses(String, int, InetAddress, int, boolean) line: 127       
        Socket.<init>(String, int, InetAddress, int) line: 177       
        Socket.<init>(String, int) line: 149       
        MainActivity$Connect1$1.onClick(View) line: 57       
        Button(View).performClick() line: 4162       
        View$PerformClick.run() line: 17082       
        Handler.handleCallback(Message) line: 615       
        ViewRootImpl$ViewRootHandler(Handler).dispatchMessage(Message) line: 92       
        Looper.loop() line: 137       
        ActivityThread.main(String[]) line: 4856       
        Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]       
        Method.invoke(Object, Object...) line: 511       
        ZygoteInit$MethodAndArgsCaller.run() line: 1007       
        ZygoteInit.main(String[]) line: 774       
        NativeStart.main(String[]) line: not available [native method]       


il logcat non mi dà nessun errore...

codice java su android
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
         private Socket client;
         private PrintWriter printwriter;
         private EditText textField;
         private Button button;
         private String messsage;
         
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
       
       Connect1 c=new Connect1();
       c.execute();
       
       
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
   

    protected class Connect1 extends  AsyncTask<Void,String,String>{
       
           protected String doInBackground(Void... params){
                  textField = (EditText) findViewById(R.id.editText1); //reference to the text field
                button = (Button) findViewById(R.id.button1);   //reference to the send button
                  button.setOnClickListener(new View.OnClickListener() {
                       
                 public void onClick(View v) {
               
                  messsage = textField.getText().toString(); //get the text message on the text field
                  textField.setText("");      //Reset the text field to blank
               
                  try {
               
                   client = new Socket("192.168.25.1", 4444);  //connect to server
                   printwriter = new PrintWriter(client.getOutputStream(),true);
                   printwriter.write(messsage);  //write the message to output stream
               
                   printwriter.flush();
                   printwriter.close();
                   client.close();   //closing the connection
               
                  } catch (UnknownHostException e) {
                   e.printStackTrace();
                  } catch (IOException e) {
                   e.printStackTrace();
                  }
                 }
                });
                return "ok";
        }
   
   
 }
 


questo è il server in java:
Codice (Java): [Seleziona]
public class mmain {
          private static ServerSocket serverSocket;
            private static Socket clientSocket;
            private static InputStreamReader inputStreamReader;
            private static BufferedReader bufferedReader;
            private static String message;
           
        public static void main(String[] args) throws MyException {
                               
                 try {
                    serverSocket = new ServerSocket(4444);  //Server socket
         
                } catch (IOException e) {
                    System.out.println("Could not listen on port: 4444");
                }
         
                System.out.println("Server started. Listening to the port 4444");
         
                while (true) {
                    try {
         
                        clientSocket = serverSocket.accept();   //accept the client connection
                        inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
                        bufferedReader = new BufferedReader(inputStreamReader); //get the client message
                        message = bufferedReader.readLine();
         
                        System.out.println(message);
                        inputStreamReader.close();
                        clientSocket.close();
         
                    } catch (IOException ex) {
                        System.out.println("Problem in message reading");
                    }
                }
               
        }
}

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Progetto Client(Android)-Server(Java)
« Risposta #2 il: 20 Agosto 2013, 22:18:44 CEST »
0
Cosa c'è di più esplicativo di questo: NetworkOnMainThreadException

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Progetto Client(Android)-Server(Java)
« Risposta #3 il: 20 Agosto 2013, 22:44:56 CEST »
0
Dovrei mettere la connessione in un'altra classe?

Offline matttt

Re:Progetto Client(Android)-Server(Java)
« Risposta #4 il: 20 Agosto 2013, 23:06:17 CEST »
0
L'eccezione sollevata ti dice che stai utilizzando le funzioni di rete nel thread principale e questo è male.
Dovresti gestire tutte le comunicazioni di rete in un thread apposito.
Le mie apps su Google Play Store:

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Progetto Client(Android)-Server(Java)
« Risposta #5 il: 20 Agosto 2013, 23:40:08 CEST »
0
ora ci provo.....grazie  ;-)

Offline Andrea Di Lello

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Win 7
Re:Progetto Client(Android)-Server(Java)
« Risposta #6 il: 18 Settembre 2013, 12:40:08 CEST »
0
ciao,

per la gestione dei thread insieme al thread della UI dell'Activity è utile utilizzare AsyncTask per la gestione della rete, quì

http://myandroidsolutions.blogspot.ro/2012/07/android-tcp-connection-tutorial.html

ho trovato un ottimo esempio di uso corretto (e funzionante soprattutto!) di AsyncTask per uno scopo che mi sembra faccia al caso vostro...


Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Progetto Client(Android)-Server(Java)
« Risposta #7 il: 18 Settembre 2013, 15:41:01 CEST »
+1
Ho utilizzato un thread a parte (implementando runnable) ed ha funzionato tutto ;)