This is an android application which sends a text message to a server. When you press the send button, the application sends the message in the text field to the server program. Here the program been written so that the client runs on the Android emulator and the server runs on the local host. IP address 10.0.2.2 can be used to connect to the local host with Android. Server program is continuously listening to the port 4444. When an incoming message arrived, server read it and show it on the standard output.
This tutorial is based on Android 4.4 (API Level 19 - KITKAT) version.
Following are the source codes of main components.
Following are the both Android client and Java server complete projects. You can clone or download them as zips from Git-Hub.
Git-Hub HTTPS clone URL: https://github.com/lakjcomspace/AndroidTextClientServer.git
Git-Hub Repository URL: https://github.com/lakjcomspace/AndroidTextClientServer
Download as a Zip: https://github.com/lakjcomspace/AndroidTextClientServer/archive/master.zip
You can run the projects by importing them to the IDE. Or just create you own project and copy and paste above source files.
This tutorial is based on Android 4.4 (API Level 19 - KITKAT) version.
Following are the source codes of main components.
Android Text Client Application
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:paddingBottom="@dimen/activity_vertical_margin" | |
android:paddingLeft="@dimen/activity_horizontal_margin" | |
android:paddingRight="@dimen/activity_horizontal_margin" | |
android:paddingTop="@dimen/activity_vertical_margin" | |
tools:context=".SlimpleTextClientActivity" > | |
<EditText | |
android:id="@+id/editText1" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_alignParentTop="true" | |
android:layout_centerHorizontal="true" | |
android:ems="10" > | |
<requestFocus /> | |
</EditText> | |
<Button | |
android:id="@+id/button1" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_below="@+id/editText1" | |
android:layout_centerHorizontal="true" | |
android:text="Send" /> | |
</RelativeLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.lakj.comspace.simpletextclient" | |
android:versionCode="1" | |
android:versionName="1.0" > | |
<uses-sdk | |
android:minSdkVersion="11" | |
android:targetSdkVersion="19" /> | |
<uses-permission android:name="android.permission.INTERNET" > | |
</uses-permission> | |
<application | |
android:allowBackup="true" | |
android:icon="@drawable/ic_launcher" | |
android:label="@string/app_name" | |
android:theme="@style/AppTheme" > | |
<activity | |
android:name="com.lakj.comspace.simpletextclient.SlimpleTextClientActivity" | |
android:label="@string/app_name" > | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.lakj.comspace.simpletextclient; | |
import java.io.IOException; | |
import java.io.PrintWriter; | |
import java.net.Socket; | |
import java.net.UnknownHostException; | |
import android.app.Activity; | |
import android.os.AsyncTask; | |
import android.os.Bundle; | |
import android.view.Menu; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
/** | |
* This is a simple Android mobile client | |
* This application read any string massage typed on the text field and | |
* send it to the server when the Send button is pressed | |
* Author by Lak J Comspace | |
* | |
*/ | |
public class SlimpleTextClientActivity 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_slimple_text_client); | |
textField = (EditText) findViewById(R.id.editText1); // reference to the text field | |
button = (Button) findViewById(R.id.button1); // reference to the send button | |
// Button press event listener | |
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 | |
SendMessage sendMessageTask = new SendMessage(); | |
sendMessageTask.execute(); | |
} | |
}); | |
} | |
private class SendMessage extends AsyncTask<Void, Void, Void> { | |
@Override | |
protected Void doInBackground(Void... params) { | |
try { | |
client = new Socket("10.0.2.2", 4444); // connect to the 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 null; | |
} | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.slimple_text_client, menu); | |
return true; | |
} | |
} |
Java Sever Program
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.lakj.comspace.simpletextserver; | |
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.net.ServerSocket; | |
import java.net.Socket; | |
/** | |
* This is a simple server application. This server receive a string message | |
* from the Android mobile phone and show it on the console. | |
* Author by Lak J Comspace | |
*/ | |
public class SimpleTextServer { | |
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) { | |
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"); | |
} | |
} | |
} | |
} |
Following are the both Android client and Java server complete projects. You can clone or download them as zips from Git-Hub.
Git-Hub HTTPS clone URL: https://github.com/lakjcomspace/AndroidTextClientServer.git
Git-Hub Repository URL: https://github.com/lakjcomspace/AndroidTextClientServer
Download as a Zip: https://github.com/lakjcomspace/AndroidTextClientServer/archive/master.zip
You can run the projects by importing them to the IDE. Or just create you own project and copy and paste above source files.