Partage
  • Partager sur Facebook
  • Partager sur Twitter

envoie message socket server java

Sujet résolu
    15 septembre 2019 à 20:17:31

    Bonjour.

    Mon but est d'envoyer un message depuis un émulateur android à mon serveur sur netbeans.

    L'envoie du message de android à netbeans se déroule très bien, par contre le renvoie d'un message de confirmation de netbeans à android ne fonctionne pas.

    Pourtant le programme fonctionne très bien.

    Avez vous une idée précise pour régler ce problème ?

    J'ai été sur d'autre forum, cependant ils me racontent tout et n'importe quoi sauf la réponse que je souhaite obtenir et qui pourrai aider d'autre personnes dans le futur.

    Je vous laisse mon code :

    Sur Android studio :

    Dans Main Activity

    package premierprojet.android.client;
     
    import android.os.AsyncTask;
    import android.os.Handler;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
     
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    public class MainActivity extends AppCompatActivity {
     
        EditText e1;
        Button b1;
        private static Socket s;
        private static InputStreamReader isr;
        private static BufferedReader br;
        private static PrintWriter printWriter;
        private static String message = "";
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            e1=(EditText)findViewById(R.id.editText);
            b1=(Button)findViewById(R.id.button);
            b1.setOnClickListener(envoyerListener);
     
            Thread myTread = new Thread(new MyServerThread());
            myTread.start();
        }
        private View.OnClickListener envoyerListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                message = e1.getText().toString();
               myTask mt = new myTask();
                mt.execute();
     
                //Toast.makeText(getApplicationContext(),"Data sent",Toast.LENGTH_LONG).show();
            }
        };
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    //classe pour la réception du message depuis mon serveur netbeans (ne fonctionne pas vraiment)
        class MyServerThread implements Runnable{
     
                Socket s;
                ServerSocket ss;
            InputStreamReader isr;
            BufferedReader bufferedReader;
            Handler h = new Handler();
     
            String message;
     
            @Override
            public void run() {
                try{
                    ss=new ServerSocket(5000);
     
                    while(true){
                        s=ss.accept();
                        isr=new InputStreamReader(s.getInputStream());
                        bufferedReader=new BufferedReader(isr);
                        message=bufferedReader.readLine();
                        h.post(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //classe pour l'envoie du message (fonctionne très bien)
     
        class myTask extends AsyncTask<Void,Void,Void> {
     
            @Override
            protected Void doInBackground(Void... params) {
     
                try{
                    s=new Socket("192.168.1.48",5000); //connect to the scket at port 5000
                    printWriter=new PrintWriter(s.getOutputStream());
                    printWriter.write(message);
                    printWriter.flush();
                    printWriter.close();
                    s.close();
     
                }catch(IOException e){
                    e.printStackTrace();
                }
     
                return null;
            }
        }
     
     
    }

    Dans XML

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
        <EditText
    android:id="@+id/editText"
    android:layout_width="383dp"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="35dp"
    android:ems="10"
    android:inputType="textPersonName"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="60dp" />
    
        <Button
    android:id="@+id/button"
    android:layout_width="366dp"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="141dp"
    android:text="send"
    tools:layout_editor_absoluteX="4dp"
    tools:layout_editor_absoluteY="197dp" />
    </RelativeLayout>

    Et voici mon serveur sur netbeans

    package monserveur;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    /**
     *
     * @author Christophe
     */
    public class MonServeur {
        private static ServerSocket ss;
        private static Socket s;
        private static BufferedReader br;
        private static InputStreamReader isr;
        private static String message;
        private static PrintWriter pw;
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            try{
                while(true){
                    ss=new ServerSocket(5000);
                    System.out.println("Server runnig at port 5000");
                    s=ss.accept();
                    System.out.println("Server accepté");
     
                    isr=new InputStreamReader(s.getInputStream());
                    br=new BufferedReader(isr);
                    message = br.readLine();
                    System.out.println(message);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    //ici ce trouve la condition pour le renvoie du message (la réception fonctionne très bien)
                if(message!=""){
                    Socket s = new Socket ("192.168.1.48",5000);
                    System.out.println("envoie d'un message");
                    pw=new PrintWriter(s.getOutputStream(),true);
                    pw.write("A");
                    pw.flush();
                    pw.close();
                    s.close();
                }
                isr.close();
                br.close();
                ss.close();
                s.close();
                 
                }
                 
            }catch(IOException e){
                e.printStackTrace();
            }
        }
         
    }





    • Partager sur Facebook
    • Partager sur Twitter
      18 septembre 2019 à 17:07:57

      Sujet résolu merci quand même ^^
      • Partager sur Facebook
      • Partager sur Twitter

      envoie message socket server java

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown