在Android中建立Java服务器和客户端之间的连接appEDIT

问题描述:

我在android中创建了一个android应用程序和一个Java服务器。在Android中建立Java服务器和客户端之间的连接appEDIT

但我遇到了以下问题:我的客户端(Android部分)使用android环回地址连接到端口6000上的本地计算机。

我的服务器(在Java中)在本地计算机上监听端口6000 - 但是我必须使用什么IP来获取接受客户端的套接字?

InetSocketAddress serverAddr = new InetSocketAddress(SERVERIP,serverPort); 
serverSocket = new ServerSocket(); 
serverSocket.bind(serverAddr); 

那么我必须使用什么样的SERVERIP呢?

更新:我的客户端在模拟器上运行!!!!!

编辑:

公共类ClientThread实现Runnable { 对象syncToken;

public ClientThread(Object syncToken) { 
     this.syncToken = syncToken; 
    } 

    public void run() { 
     try { 
      InetAddress serverAddr = InetAddress.getByName(serverIpAddress); 

      socket = new Socket(serverAddr, 50458); 


     } catch (UnknownHostException e) { 
      System.err.println("Don't know about host"); 
     } catch (IOException e) { 
      System.err 
        .println("Couldn't get I/O for the connection to host"); 
     } 

     try { 
      out = new PrintStream(socket.getOutputStream()); 
     } catch (IOException e) { 

      System.out.println(e); 
     } 

     while (true) { 
      synchronized (syncToken) { 
       try { 
        syncToken.wait(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 

     } 

    } 
} 

这里是:私人字符串serverIpAddress = “10.0.2.2” !!!!!

+0

你的意思是localhost? 127.0.0.1? – 2011-05-18 13:29:06

+0

我不知道这是我应该使用什么? – stoycely 2011-05-18 13:30:47

+0

好吧,它看起来像混乱增长:)你介意给我们显示你在客户端连接的确切代码吗?你的意思是“android环回地址”究竟是什么意思? – 2011-05-18 13:37:41

你想在Android上运行服务器部分?我想不是,在这种情况下,使用环回地址并不会真正起作用,因为Android系统上的环回接口会循环回到Android机器本身,因此不会路由到外部。

+0

他可能在模拟器上运行它,这就是为什么它在同一台机器上连接。 – 2011-05-18 13:31:39

+0

这也不起作用 - 仿真器模拟完整的系统,具有自己的内核,TCP堆栈和回送接口。 – 2011-05-18 13:34:14

+0

好....我用我的客户端的回环android地址...问题是我应该用什么服务器是在Java? – stoycely 2011-05-18 13:35:14

对于serverAddr,使用#InetSocketAddress(int port)构造函数,它指定通配符地址和特定的端口,这意味着它监听机器的所有接口。

编辑:为了获得最佳效果,在android设备上使用服务器的DNS名称来连接它。

http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking:如果要在模拟器内与本地主机通信,请在本地主机上使用IP 127.0.0.1,并在Android中使用IP 10.0.2.2。这应该让你在Android客户端和本地主机服务器之间进行通信。

+0

谢谢你!!! :)这是我所需要的:) – stoycely 2011-05-18 13:43:12

+0

很高兴知道这对你有用。 – Femi 2011-05-18 13:46:22

+0

哇,不知道10.0.2.2路由到外部的环回。任何想法,如果它从一开始就可用? – 2011-05-18 13:47:44