Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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
Java 在android中从套接字读取数据_Java_Android_Sockets_Io_Java Io - Fatal编程技术网

Java 在android中从套接字读取数据

Java 在android中从套接字读取数据,java,android,sockets,io,java-io,Java,Android,Sockets,Io,Java Io,试图从套接字读取数据,我快发疯了。我尝试了所有的一切,我认为我的代码应该工作,但没有 我的意图是只在onCreate上运行以下方法。首先,我创建一个线程来运行所有与网络相关的东西。然后,我创建scoket对象并读取套接字的inputstream。在这一刻,在一个无限循环中,我使用readLine读取inputstream,如上所述。最后,我对套接字提供的数据执行我想要的操作 我不知道服务器将发送多少数据。它将是json格式的,但这并不重要 这是我的密码 public void receiveMs

试图从套接字读取数据,我快发疯了。我尝试了所有的一切,我认为我的代码应该工作,但没有

我的意图是只在onCreate上运行以下方法。首先,我创建一个线程来运行所有与网络相关的东西。然后,我创建scoket对象并读取套接字的inputstream。在这一刻,在一个无限循环中,我使用readLine读取inputstream,如上所述。最后,我对套接字提供的数据执行我想要的操作

我不知道服务器将发送多少数据。它将是json格式的,但这并不重要

这是我的密码

public void receiveMsgs(){      
    new Thread(new Runnable(){
        @Override
        public void run() {
            BufferedReader in = null;
            try {
                Log.d("NETWORK-RECEIVE", "Trying to connect to socket...");
                Socket socket;
                InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
                socket = new Socket(serverAddr, SERVERPORT);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                if(socket.isConnected()){
                    Log.d("NETWORK-RECEIVE", "The connection have been stablished");
                }
            } catch (IOException e) {
                e.printStackTrace();
                Log.d("NETWORK-RECEIVE", "Something goes wrong: IOException");
            }
            while(true){
                String msg = null;
                try {
                    StringBuilder total = new StringBuilder();
                    String line;
                    while ((line = in.readLine()) != null) {
                        total.append(line);
                    }                   
                    msg = total.toString();
                    Log.d("NETWORK-RECEIVE","Message readed!:"+msg);
                } catch (IOException e) {
                    e.printStackTrace();
                    Log.d("NETWORK-RECEIVE", "Something goes wrong: IOException");
                }
                if(msg == null){
                    Log.d("NETWORK-RECEIVE", "Message is null");
                    break;
                }
                else{
                    //Do what I want
                    Log.d("NETWORK-RECEIVE", "something");
                }
            }           
        }
    }).start();
}

看过square的OKHttp或改装版吗

&


看起来比插座容易。你真的需要插座吗?

有没有看过square的OKHttp或改型

&


看起来比插座容易。您真的需要套接字吗?

您是在模拟器上还是在设备上尝试。。?如果您想从服务器获取数据,为什么不使用httpclient?两者都有,因为我们使用流处理我们自己的协议,我必须通过streamsWell发布内容,运行它会发生什么?您会生成哪些日志消息?您是否有任何理由相信正在与服务器建立连接?不要猜测-在代码中添加一些成功结果的逐步日志记录。告诉我们实际观察到的行为是什么。你怎么知道它不起作用?那么什么不起作用呢?您在调查问题或报告任何人帮助您所需的信息方面都不是非常积极主动。您是在emulator或设备上尝试吗。。?如果您想从服务器获取数据,为什么不使用httpclient?两者都有,因为我们使用流处理我们自己的协议,我必须通过streamsWell发布内容,运行它会发生什么?您会生成哪些日志消息?您是否有任何理由相信正在与服务器建立连接?不要猜测-在代码中添加一些成功结果的逐步日志记录。告诉我们实际观察到的行为是什么。你怎么知道它不起作用?那么什么不起作用呢?无论是调查问题还是报告任何人帮助你所需的信息,你都不是很积极主动。