简体   繁体   中英

Android and PC Socket connection

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??

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM