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

时间:2011-05-18 13:25:07

标签: java android sockets

我在android中有一个应用程序,我在其中创建了一个Android客户端和一个Java服务器。

但是我遇到了以下问题:我的客户端(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();
                }
            }

        }

    }
}

这是:private String serverIpAddress =“10.0.2.2”; !!!!!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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