I used the following code as Client side on android device
/*
* This is a simple Android mobile client
* This application read any string message typed on the text field and
* send it to the server when the Send button is pressed
*/
package lakj.comspace.simpleclient;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SimpleClientActivity extends Activity {
private Socket client;
private PrintWriter printwriter;
private EditText textField;
private Button button;
private String messsage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
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
try {
client = new Socket("10.0.2.2", 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();
}
}
});
}
}
and following as a server side as simple java project
/*
* 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
*/
package simpleserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
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 client msg
message = bufferedReader.readLine();
System.out.println(message);
inputStreamReader.close();
clientSocket.close();
} catch (IOException ex) {
System.out.println("Problem in message reading");
}
}
}
}
i used simple button to send string from Android Emulator to java application but it's giving connection error.Which port and ip i should use instead of that mentioned in the code... and how to get that please help me
and how can i modify this code to send mobile contacts from android to PC??
Connect your device with same network then it should work.
Easy way is: Enable your device's hotspot and connect your PC on this(hotspot) network.
Don't forget to change the IP.
You probably have the host address wrong for your computer, If you are running a windows machine goto your start menu and in the search box type "cmd", you should see a black box popup, type in "ipconfig"
So if i was to be buliding that app I would use the Ip address 10.0.0.129. Use any port from 9152 to 65535. You will probably want to make the IP address static so it doesnt change around on you while you test your app. Follow this tutorial to assist you http://www.howtogeek.com/howto/19249/how-to-assign-a-static-ip-address-in-xp-vista-or-windows-7/ This will allow you to test on your app on local network without your computers Ip address changing.
If you want to use this app outside of your local network you will need to either rent a dedicated server, setup a java web server or use your machine as the server. To use your machine you will need a static ip address or a DNS service, I use http://dyn.com/dns/ to assign a host name to my computer so that I can use my computer anytime from anywhere (as long as its turned on). Also note that if you do choose to use your computer you will need to setup port forwarding on your router. Just look up port forwarding and you will find tons of tutorials.
Good Luck.