package se.nekotronic.onepinger; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import android.os.Bundle; import android.app.Activity; import android.text.format.Time; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { private TextView output_area; private EditText address_field; private Button go_button; public static final String DEFAULT_HOST = "130.243.124.198"; public String host; public static final int PORT = 2003; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); output_area = (TextView)findViewById(R.id.output_area); address_field = (EditText)findViewById(R.id.address_field); address_field.setText(DEFAULT_HOST); go_button = (Button)findViewById(R.id.go_button); go_button.setOnClickListener(this); output_area.setText(""); print("AndroidPinger: Appen startar."); } @Override public void onClick(View view) { Log.d("*** OnePinger", "Button clicked: view = " + view.toString() + "\n"); if (view == go_button) { try { host = address_field.getText().toString(); print("Connecting to " + host + "..."); Socket socket = new Socket(host, PORT); print("Connected."); BufferedReader from_server = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter to_server = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); // true: PrintWriter is line buffered print("Sending PING to server..."); to_server.println("PING"); Log.d("*** OnePinger", "Waiting for a line from the server..."); String line_from_server = from_server.readLine(); if (line_from_server == null) { print("Nothing to read from server."); } else { print("Got line from server: '" + line_from_server + "'"); } to_server.close(); from_server.close(); socket.close(); } catch (UnknownHostException e) { warning("Unknown host: " + e.getMessage()); } catch (IOException e) { warning("I/O Exception: " + e.getMessage()); } } } // onClick public void print(String message) { Log.d("*** OnePinger", "message: " + message); Time now = new Time(); now.setToNow(); String timeString = now.format("%H:%M:%S"); final String line = timeString + ": " + message + "\n"; output_area.post(new Runnable() { @Override public void run() { // output_area.setText(line + output_area.getText()); output_area.setText(output_area.getText() + line); output_area.invalidate(); } }); } // print public void warning(String message) { print("Warning! " + message); } } // MainActivity