Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将android与服务器连接_Java_Android_Eclipse_Serversocket - Fatal编程技术网

Java 如何将android与服务器连接

Java 如何将android与服务器连接,java,android,eclipse,serversocket,Java,Android,Eclipse,Serversocket,我计划将我的android应用程序作为客户端连接到服务器,但我不知道在android活动中我可以在哪里编写代码,因为我有很多活动,我还需要你们解释端口号我可以更改吗?如果我能依靠什么 客户: import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import

我计划将我的android应用程序作为客户端连接到服务器,但我不知道在android活动中我可以在哪里编写代码,因为我有很多活动,我还需要你们解释端口号我可以更改吗?如果我能依靠什么

客户:

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 EditText ipField;
 private Button button;
 private String messsage;
 private String serverIp;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  textField = (EditText) findViewById(R.id.editText1); //reference to the text field
  button = (Button) findViewById(R.id.button1);   //reference to the send button
  ipField=(EditText) findViewById(R.id.editText2);

  //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
    serverIp=ipField.getText().toString();

    try {

     client = new Socket(serverIp, 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();
    }
   }
  });

 }
}
服务器:

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 the client message
                message = bufferedReader.readLine();

                System.out.println(message);
                inputStreamReader.close();
                clientSocket.close();

            } catch (IOException ex) {
                System.out.println("Problem in message reading");
            }
        }

    }
}
您可以在服务器上创建单独的线程。若您需要活动的引用,您可以将相同的实例传递给它以处理回调

您可以在端口1到65535上创建服务器,除非它被任何其他应用程序占用


如果它解决了您的问题,请告诉我。

您可以尝试使用asynctask和http get post请求,如@Hubert很好地回答的示例问题。如果您需要使用socket,请尝试查看并希望它有帮助