Android和PC Socket连接

我在Android设备上使用以下代码作为客户端

/* * 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(); } } }); } } 

并作为简单的java项目作为服务器端

 /* * 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"); } } } } 

我使用简单的按钮从Android模拟器发送字符串到java应用程序,但它给出了连接错误。我应该使用哪个端口和IP而不是代码中提到的…以及如何获得它请帮助我

以及如何修改此代码以将移动联系人从Android发送到PC?

您的计算机可能有错误的主机地址,如果您正在运行Windows计算机转到开始菜单并在搜索框中键入“cmd”,您应该看到一个黑框弹出窗口,键入“ipconfig”

在此处输入图像描述

因此,如果我要建立该应用程序,我将使用IP地址10.0.0.129。 使用9152到65535之间的任何端口。您可能希望将IP地址设置为静态,以便在测试应用程序时不会改变您的状态。 请按照本教程的帮助http://www.howtogeek.com/howto/19249/how-to-assign-a-static-ip-address-in-xp-vista-or-windows-7/这将允许您在没有您的计算机IP地址更改的情况下在本地网络上测试您的应用程序。

如果要在本地网络之外使用此应用程序,则需要租用专用服务器,设置Java Web服务器或将计算机用作服务器。 要使用你的机器,你需要一个静态IP地址或DNS服务,我使用http://dyn.com/dns/为我的电脑分配一个主机名,以便我可以随时随地使用我的电脑(只要它打开了)。 另请注意,如果您选择使用计算机,则需要在路由器上设置端口转发。 只需查看端口转发,您就会发现大量的教程。

祝好运。

使用相同的网络连接您的设备然后它应该工作。
简单方法是:启用设备的热点并在此(热点)网络上连接您的PC。
不要忘记更改IP。