Android Emulator:套接字未连接到httpclient的服务器和python端
我有两个问题 首先,我正在运行一个Android仿真器,它连接到Python服务器以从中下载图像。由于某些原因,套接字未连接到远程服务器。我正在使用服务器的IP地址和服务器正在侦听的端口。如果有人能帮助我,那就太好了 编辑:我还导出了apk文件,并在手机中安装了该应用程序。它仍然不起作用 我的代码:Android Emulator:套接字未连接到httpclient的服务器和python端,android,sockets,python-requests,client-server,androidhttpclient,Android,Sockets,Python Requests,Client Server,Androidhttpclient,我有两个问题 首先,我正在运行一个Android仿真器,它连接到Python服务器以从中下载图像。由于某些原因,套接字未连接到远程服务器。我正在使用服务器的IP地址和服务器正在侦听的端口。如果有人能帮助我,那就太好了 编辑:我还导出了apk文件,并在手机中安装了该应用程序。它仍然不起作用 我的代码: ip = InetAddress.getLocalHost(); InetAddress serverAddr = InetAddress.getByName("56.249.79.139"); i
ip = InetAddress.getLocalHost();
InetAddress serverAddr = InetAddress.getByName("56.249.79.139");
int port2ConnectDefault = 8002;
Socket socket;
BufferedReader in;
PrintWriter out;
//System.out.print(ip.getHostAddress());
Log.v("Check_insert", "got in");
socket = new Socket(serverAddr, port2ConnectDefault);
Log.v("Check_insert", "got in2");
System.out.println("Connected to server...sending echo string");
我得到“检查插入”,“进入”日志,但没有“检查插入”,“进入2”
第二,除了使用sockets让Android客户端使用IP地址和端口号从python服务器下载映像之外,还有其他方法吗?我查看了okhttp,但我不知道这在python端是如何实现的
非常感谢!由于您没有提到AsynTask或Thread,我认为您的第一个问题可能与我的问题相同。详细信息是可用的。总之,这是因为您在主线程上执行网络操作,这在以后的Android版本中是不允许的。如果您检查从
socket=new Sock引发的异常et(serverAddr,port2ConnectDefault);
,应该是“android.os.NetworkOnMainThreadException”。您可以使用线程或
为了解决这个问题,比如
public class MainActivity extends AppCompatActivity {
Socket socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
socket = new Socket(ServerIP, Port);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
PS:Android emulator也可以连接到(远程)python服务器。希望有帮助。
我正在运行一个连接到python服务器的Android仿真器。
不这样认为。从来没有见过仿真器尝试做这样的事情。所以仿真器无法连接到python服务器?因为这就是我遇到的问题。我认为你的客户端应用程序无法连接到服务器。你为什么要这样做正在连接到python服务器?您想做什么?HTTP服务器可以为您的应用程序工作吗?okhttp听起来不错。您只需要设置一个HTTP服务器。它可能是python HTTP服务器。