我目前正在尝试使用套接字将字符串从python客户端发送到运行在android虚拟设备中的android应用程序内的服务器套接字。服务器在到达ServerSocket.accept((时等待
public class MyServer implements Runnable{ //EXECUTED IN A NEW THREAD
//I'VE INCLUDED THE INTERNET PERMISSION AS WELL
ServerSocket ss;
Socket mySocket;
DataInputStream dis;
@Override
public void run() {
try {
ss=new ServerSocket(5554);
while(true) {
System.out.println("ALWAYS PRINTS THIS AND GETS STUCK AT THIS POINT");
mySocket = ss.accept();
System.out.println("NEVER PRINTS THIS");
dis = new DataInputStream(mySocket.getInputStream());
String mensaje = dis.readUTF(); //MORE STUFF NEVER EXECUTED
}
} catch (IOException e) {
e.printStackTrace();
//NEVER REACHES THIS POINT EITHER
}
再也不走了。我一直在尝试通过以下代码从python客户端连接:
def conSock():
HOST = '127.0.0.1' # Have also tried with the avd's ip 16.0.2.2 and some other ips
PORT = 5554 # Have also tried with 8080, 65321 ,etc
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
print('ALWAYS PRINTS THIS')
s.connect((HOST, PORT))
print('NEVER* PRINTS THIS')
s.sendall(b"Hello World")
data = s.recv(1024)
print("Received ", repr(data))
但是,当我从虚拟设备内的浏览器调用localhost:5554时,它似乎只会超过accept((。我在Android中没有收到错误消息,但根据我使用的IP,我在Python中有错误号10060和10061。最近,我收到了";Android控制台:键入命令列表的"help";作为Python控制台中的响应,但仍然没有来自Android的响应。我对插座没有什么经验,感觉自己错过了什么。
你最好停止尝试。因为你需要成为一名网络专家,才能将运行在电脑上的客户端与运行在同一台电脑上的模拟器中的服务器连接起来。如果你可以反转客户端和服务器,那么让客户端连接很容易。但在这种情况下并非如此。不,拿一台真正的安卓设备。然后你就可以使用安卓设备的本地局域网ip了。