android - Android Serversocket似乎不接受模拟器上的连接

标签 android sockets client

我一直在尝试在两个Android仿真器之间实现简单的套接字通信,但似乎无法实现。

我的服务器:

public void run() {     
    if (SERVERIP != null) {
        try {
            serverStatus.setText("My IP: " + SERVERIP);
            serverSocket = new ServerSocket(6798);
            serverStatus.setText("ServerSocket Created");
        }
        catch(Exception e) {
            e.printStackTrace();
        }

        try {
            while (true) {   
                serverStatus.setText("waiting for client");
                Socket client = serverSocket.accept();
                serverStatus.setText("Connected.");
                BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                String line = in.readLine();

                serverStatus.setText(line);
                in.close();
                client.close();
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    else
        serverStatus.setText("Couldn't detect internet connection.");
}

我的客户:
try {
    InetAddress ina = InetAddress.getByName("10.0.2.2");
    socket = new Socket(ina, 6789); 
}
catch (Exception e) {
    e.printStackTrace();
}

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
    out.println("Hey Server!");
    dispText.setText("sent");
}
catch (Exception e) {
    e.printStackTrace();
}

客户端继续显示消息“已发送”,但是服务器不会超出“等待客户端”(停留在阻塞的accept()上)。
我已经在Windows计算机上使用telnet将服务器仿真器控制台上的端口6789重定向到6798。我还尝试过关闭防火墙以及针对此处提出的类似问题发布的其他建议。请帮忙,因为似乎无法理解它,并且觉得我犯了一个非常愚蠢的错误。

另外,有人可以告诉我,如果服务器仍然停留在accept()上,那么客户端如何可能超出套接字创建代码行。或者,只要客户端在端口上监听,服务器不响应就对客户端没有关系?

最佳答案

Android模拟器被设计为放置在虚拟防火墙/路由器后面,即使彼此位于同一网络上也无法看到彼此。 Google的仿真器文档中的“Using Network Redirection”以及“互连仿真器实例”部分说明了如何与仿真器实例进行通信。

至于你的最后一个问题。将空的构造函数用于套接字,然后使用connect call with a specified timeout

关于android - Android Serversocket似乎不接受模拟器上的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289503/

相关文章:

c - 放弃对 C 的 SYN 攻击

.net 数据包嗅探 : attempt to create socket causes access error

C TCP 客户端无法连接到服务器

java - 在 Java 1.7 中使用 Android Studio

android - 在Gradle Sync上自动重建Android Studio项目

java - 从 Assets 文件夹中重新缩放图像以适合屏幕

java - 求助关于AndroidManifest.xml读取问题

PHP TCP 套接字服务器在接受新连接时挂起

typescript - 在客户端和服务器之间共享类型

Node.JS:在通过 HTTPS 发送数据之前断言授权