Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Emulator:套接字未连接到httpclient的服务器和python端_Android_Sockets_Python Requests_Client Server_Androidhttpclient - Fatal编程技术网

Android Emulator:套接字未连接到httpclient的服务器和python端

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

我有两个问题

首先,我正在运行一个Android仿真器,它连接到Python服务器以从中下载图像。由于某些原因,套接字未连接到远程服务器。我正在使用服务器的IP地址和服务器正在侦听的端口。如果有人能帮助我,那就太好了

编辑:我还导出了apk文件,并在手机中安装了该应用程序。它仍然不起作用

我的代码:

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服务器。