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 安卓套接字被吊死_Android_Sockets - Fatal编程技术网

Android 安卓套接字被吊死

Android 安卓套接字被吊死,android,sockets,Android,Sockets,我创建了一个服务,该服务反过来创建了一个套接字,但一旦尝试读取从服务器发送的数据,它就会挂起,另一方面,如果我不使用服务,而是使用普通活动,则运行相同的代码 import android.app.*; import android.content.*; import android.os.*; import android.util.*; import java.net.*; import java.

我创建了一个服务,该服务反过来创建了一个套接字,但一旦尝试读取从服务器发送的数据,它就会挂起,另一方面,如果我不使用服务,而是使用普通活动,则运行相同的代码

        import android.app.*;
        import android.content.*;
        import android.os.*;
        import android.util.*;
        import java.net.*;
        import java.io.*;
        import android.widget.*;




     public class BackgroundService extends Service
            {
                    private Socket socket=null;
                    private  InputStreamReader  in=null;
                    private String ip;

                    private String tag="BackgroundService";

                    public IBinder onBind(Intent p1)
                    {
                            // TODO: Implement this method
                            return null;
                    }

             public void onCreate(){
                     super.onCreate();




             }
            public void onStart(Intent i,int id){
             super.onStart(i,id);
                    ip=i.getStringExtra("Ip");

             Log.v(tag,"Ip "+i.getStringExtra("Ip"));
                    try
                    {
                            socket = new Socket(ip.trim(), 8888);
                            new Runnable() {

                                    public void run()
                                    { 
//                                        Hangs in this block.....
                                            try
                                            {
                                                    in = new InputStreamReader (socket.getInputStream());
                                            BufferedReader bf=new BufferedReader (in);
        //                                 Never Reaches this messge
                                            Log.v(tag,"mess:"+bf.readLine() );
                                            }
                                            catch (IOException e)
                                            {
                                                    e.printStackTrace();
                                            }


                                    }


                            }.run();



                    }
                    catch (IOException e)
                    {
                            e.printStackTrace();
                    }



            }

            }

Log.v是一个问题,它不允许您打印值,因此使用System.out.println()和bf.printline将包含消息

套接字连接正确吗?那么线程是否进入了run方法呢?此外,尝试先打开输出流。Java中有一个关于对象流的问题,但我不确定它是否能解决您的问题。顺便说一句,为什么使用Runnable,但调用它是同步的?你想使用a吗?是的,套接字连接正确,即使我不使用runable,它也是一样的,我会先尝试调用outputstream,然后再调用InputStream,最后使用System.out.println works在其Log.v中找出了缺陷