python android 中的套接字无法连接到 virtualbox 中的 python 服务器 运行
python socket in android fails to connect to python server run in virtualbox
我将我的 android phone 和 python 服务器 运行 虚拟盒子中的计算机连接到同一个 Wifi。我可以在同一个 VirtualBox 中将客户端连接到服务器,但无法在 phone 中工作。我对网络的了解有限。我想来自服务器和客户端的 IP 地址是相同的,它应该可以工作。谁能给我一些提示,为什么它无法连接以及如何调试它?
我在 VirtualBox 的终端中输入主机名 -I Ubuntu
得到
10.0.2.15.
我在 AndroidManifest.xml
中添加了这个
<uses-permission android:name="android.permission.INTERNET" />
python 服务器代码
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 10050
socket_address = ('10.0.2.15',port)
server_socket.bind(socket_address)
server_socket.listen(5)
client_socket,addr = server_socket.accept()
android python 客户端代码(我在 android 上使用 chaquo.python.android 到 运行 python 脚本)
def connect():
client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host_ip = '10.0.2.15'
port = 10050
client_socket.connect((host_ip,port))
android
上的错误
Process: com.example.simplecamera, PID: 17958
com.chaquo.python.PyException: TimeoutError: [Errno 110] Connection timed out
如果 python 服务器的代码与您正在执行的代码完全相同,那么我建议您更改
client_socket,addr = server_socket.accept()
到
while True:
client_socket,addr =server_socket.accept()
print('[+] connection from>>',addr)
服务器需要运行持续连接和接受
所以程序看起来像
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 10050
socket_address = ('10.0.2.15',port)
server_socket.bind(socket_address)
server_socket.listen(5)
while True:
client_socket,addr =server_socket.accept()
print('[+] connection from>>',addr)
#to close connection
client_socket.close()
并查看 https://github.com/dntfury/scaling-winner/blob/master/server_client_part_2/Server.py 以获得完全相似的服务器
我将我的 android phone 和 python 服务器 运行 虚拟盒子中的计算机连接到同一个 Wifi。我可以在同一个 VirtualBox 中将客户端连接到服务器,但无法在 phone 中工作。我对网络的了解有限。我想来自服务器和客户端的 IP 地址是相同的,它应该可以工作。谁能给我一些提示,为什么它无法连接以及如何调试它?
我在 VirtualBox 的终端中输入主机名 -I Ubuntu 得到
10.0.2.15.
我在 AndroidManifest.xml
中添加了这个
<uses-permission android:name="android.permission.INTERNET" />
python 服务器代码
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 10050
socket_address = ('10.0.2.15',port)
server_socket.bind(socket_address)
server_socket.listen(5)
client_socket,addr = server_socket.accept()
android python 客户端代码(我在 android 上使用 chaquo.python.android 到 运行 python 脚本)
def connect():
client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host_ip = '10.0.2.15'
port = 10050
client_socket.connect((host_ip,port))
android
上的错误Process: com.example.simplecamera, PID: 17958
com.chaquo.python.PyException: TimeoutError: [Errno 110] Connection timed out
如果 python 服务器的代码与您正在执行的代码完全相同,那么我建议您更改
client_socket,addr = server_socket.accept()
到
while True:
client_socket,addr =server_socket.accept()
print('[+] connection from>>',addr)
服务器需要运行持续连接和接受
所以程序看起来像
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 10050
socket_address = ('10.0.2.15',port)
server_socket.bind(socket_address)
server_socket.listen(5)
while True:
client_socket,addr =server_socket.accept()
print('[+] connection from>>',addr)
#to close connection
client_socket.close()
并查看 https://github.com/dntfury/scaling-winner/blob/master/server_client_part_2/Server.py 以获得完全相似的服务器