首页 > 解决方案 > 如何从 Android 模拟器连接到本地 Python 服务器

问题描述

我正在尝试从 Android Studio 模拟器连接到本地托管的 Python 服务器。当我从模拟器的浏览器尝试时,我收到“ERR_CONNECTION_REFUSED”。如果我尝试通过主机的浏览器或 linux 终端连接,我没有问题。下面是服务器的代码以及我的 Android 清单文件。

如果重要的话:IDE 是 Android Studio(我知道不好),操作系统是 Pop_OS

服务器

import socket


# get the hostname
host = socket.gethostname()
port = 8800  # initiate port no above 1024
print('Server On')
server_socket = socket.socket()  # get instance
# look closely. The bind() function takes tuple as argument
server_socket.bind((host, port))  # bind host address and port together

# configure how many client the server can listen simultaneously
server_socket.listen(2)
conn, address = server_socket.accept()  # accept new connection
print("Connection from: " + str(address))
while True:
    # receive data stream. it won't accept data packet greater than 1024 bytes
    data = conn.recv(1024).decode()
    if not data:
        # if data is not received break
        break
    print("from connected user: " + str(data))
    #data = input(' -> ')
    #conn.send(data.encode())  # send data to the client

conn.close()  # close the connection

应用程序/src/deub/manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.palm_trimmer">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

标签: androidandroid-studioandroid-emulator

解决方案


感谢@greeble31的建议,我检查了我的主机的端口状态(使用nmap),发现我绑定服务器的端口没有打开。将端口“8888”替换为其中一个打开的端口后,我能够成功地将模拟器连接到本地主机。


推荐阅读