# Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden.



## Erios (18. Jul 2016)

Hallo Community, 
Wie im Titel schon erwähnt möchte ich Kurze nachrichten vom Handy auf den Computer schicken. Dafür habe ich auch schon eine kleine App programmiert mit der das geht durch eine logdatei am Server konnte ich feststellen das die nachricht am Server ankommt aber nicht am Computer. Woran liegt Das?
App Code:

```
public class MainActivity extends AppCompatActivity {
    EditText et;
    Button btn;
    TextView tv;

    final String scripturlstring = "http://firstsecond.esy.es/ArduinoControl/server_script.php";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        et = (EditText) findViewById(R.id.editText);
        tv = (TextView) findViewById(R.id.textView);
        btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    sendToServer(et.getText().toString());
            }
        });
    }

    public void sendToServer(final String text) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    String textparam = "text1=" + URLEncoder.encode(text, "UTF-8");

                    URL scripturl = new URL(scripturlstring);
                    HttpURLConnection connection = (HttpURLConnection) scripturl.openConnection();
                    connection.setDoOutput(true);
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    connection.setFixedLengthStreamingMode(textparam.getBytes().length);


                    OutputStreamWriter contentWriter = new OutputStreamWriter(connection.getOutputStream());
                    contentWriter.write(textparam);
                    contentWriter.flush();
                    contentWriter.close();
                   
                    connection.disconnect();

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
```

PHP-Skript:

```
<?php>
$text = $_POST["text1"];
if($text != null){
     echo("Empfangener Text: ".$text);
     $logfile = fopen("logfile.txt", "a");
     fwrite($logfile, $text."\n");
    fclose($logfile);
} else{
       echo("Kein Befehl empfangen.");
}
?>
```

Programmcode am Computer:

```
@SuppressWarnings("serial")
public class Launcher extends JFrame{
    final static String scripturlstring = "http://firstsecond.esy.es/ArduinoControl/server_script.php";
    static String inputLine;
    final static String text = "hallo";
   
    public Launcher() {
        setResizable(false);
        setPreferredSize(new Dimension(250, 210));
        pack();
       
        setTitle("ArduinoControl");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }
    public static void main(String[] args) throws Exception {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame launcher = new Launcher();
                launcher.setVisible(true);
            }
           
        });
        URL serverscripturl = new URL(scripturlstring);
        URLConnection yc = serverscripturl.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}
```

Bei mir leider Nur "Kein Befehl empfangen!" angezeigt.
Danke Für Antworten!!


----------



## InfectedBytes (18. Jul 2016)

Du schreibst mit deinem php script munter in die Datei, liest sie aber nie aus, stattdessen gibst du fest einprogrammiert immer "Kein Befehl empfangen." aus.


----------



## Erios (18. Jul 2016)

Aber nur wenn nichts vom Handy empfangen wird. Und trotzdem etwas abruft.


----------



## InfectedBytes (18. Jul 2016)

Nein.
Dir scheint nicht klar zu sein was passiert:
User am Handy sendet Befehl => php Script wird ausgeführt und per POST wird die variable text1 übergeben => Text wird ausgegeben und in die log datei geschrieben => ENDE
User am Desktop ruft die seite ab und sendet keine POST variable mit => "Kein Befehl empfangen." wird ausgegeben => ENDE


----------



## Erios (18. Jul 2016)

Wie sollte ich es stattdessen machen?


----------



## InfectedBytes (18. Jul 2016)

Am besten überhaupt nicht mit dem php quatsch, sondern mit einem Programm auf einem Server oder mit einem Programm auf dem Desktop, welcher als Server fungiert. Letzteres setzt aber einen offenen Port voraus, sowie eine statische IP (oder die Nutzung von einem Service wie z.b. noip)

Falls du es unbedingt mit php machen willst oder es nicht anders kannst, dann wäre es vermutlich das einfachste, den Befehl aus der log datei zu lesen und das dann auszugeben.


----------



## Erios (18. Jul 2016)

Die log datei kann ich empfangen aber wie wähle ich dann immer den neuesten Eintrag aus?


----------



## InfectedBytes (18. Jul 2016)

Entweder überschreibst einfach immer alles oder du benutzt einfach nur die letzte Zeile.

Aber nochmal: Das ganze per php script zu lösen ist kein gute Lösung


----------



## Erios (18. Jul 2016)

Wie würde das überschreiben gehen?


----------



## InfectedBytes (18. Jul 2016)

Ist es nicht böse gemeint, aber Google es doch einfach! Das hätte dir deine letzten paar Fragen sofort beantworten können. Anstatt bei solch Kleinigkeiten nen Beitrag zu schreiben und dann auf ne Antwort zu warten, ist es eben viel sinnvoller google zu fragen und dann sofort eine Antwort zu haben.

Momentan öffnest du die Datei mit fopen(..., "a"), also im append modus, änder das einfach zum überschreiben modus "w"


----------

