android - 如何从 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>
解决方案
感谢@greeble31的建议,我检查了我的主机的端口状态(使用nmap),发现我绑定服务器的端口没有打开。将端口“8888”替换为其中一个打开的端口后,我能够成功地将模拟器连接到本地主机。
推荐阅读
- intellij-idea - Intellij 2021.1.1 无法使用 URI http://java.sun.com/jsf/core 解析 taglib
- onem2m - MainFlux 实施是否符合 OneM2M 标准?
- windows - 是否有可能从本地网络中的另一台机器访问 docker-compose 容器?
- google-cloud-bigtable - BigTable 中的最佳表格设计
- python - 在python中打印排序的字典值
- performance - Matlab效率:小for-loop
- macos - 如何在 macOS 上调试 AttributeGraph 崩溃
- typescript - Redux Thunk,修改状态:未处理的承诺拒绝:错误:[Immer] Immer 仅支持设置数组索引和“长度”属性]
- angular - Angular - 如何过滤动态数据?
- oracle - Oracle EBS中如何远程调用服务?