无法在Java和Android之间建立套接字连接

时间:2014-02-05 16:26:05

标签: java android eclipse sockets adt

我目前正在尝试在我的Android手机上托管一个服务器套接字,并使用我的电脑连接到那个。有几个应用程序已经这样做(例如Skype),所以它必须是可能的。 我目前面临的问题是,我无法连接到我的模拟器上打开的服务器套接字。 这是我在Android Developer Tools模拟器中运行的代码,用于打开我的服务器套接字:

public void run(){
    Log.i(TAG, "1");
    try{
      serverSocket = new ServerSocket(25555);
      Log.i(TAG, "2. Details: " + serverSocket);
      while(true)
      {
      clientSocket = serverSocket.accept(); //it keeps sticking here, and waiting for connections.
      Log.i(TAG, "3");

      in = new BufferedReader(
             new InputStreamReader(clientSocket.getInputStream()));
      out = new PrintWriter(clientSocket.getOutputStream(), true);

      String input = in.readLine();
      out.println("received: " + input);

      in.close();
      out.close();
      }
    } catch(Exception e) {
        Log.i(TAG, "ERROR:");
    e.printStackTrace();
    }
  }

这是我在普通eclipse中运行的代码,用于连接到此服务器套接字:

try {
    socket = new Socket(-snip-,25555);
    System.out.println("Connection has been made");
  } catch (NumberFormatException e) {
    System.out.println("Connection wasn't made. Closing the application.");
  }

这只是给了我这个错误:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)

现在我的问题是,我的代码中出错了,还是模拟器出了问题?

顺便说一句,我将这些代码行添加到AndroidManifest.xml中:

    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>

提前致谢。

1 个答案:

答案 0 :(得分:0)

根据讨论,您必须将客户端连接到Android虚拟设备服务器。这意味着您需要了解Android虚拟设备的IP。有一些方法可以实现这一目标:

  1. 首先是创建一个网络然后连接您的Android设备和您的计算机/客户端,然后他们将拥有一个IP。

  2. 您可以为Android设备分配静态IP,在这种情况下,您应该检查此link