Android Socket 被挂起

标签 android sockets

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

        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 将包含消息

关于Android Socket 被挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560011/

相关文章:

java - 生成给定字符串的有序排列

android - 如何在android studio中查看资料集报告

laravel Echo 不监听 channel 和事件

java - 一般套接字问题 - 将 C++ 结构从 Java 转移到 C++

android - onRestoreInstanceState() 和唯一 View ID

android - 将 webview 转换为位图

java - SelectionKey.interestOps(int ops) 的底层工作原理

javascript - 如何通过Express JS服务器将React JS和Socket IO连接在一起?

用于社交媒体通信的 Java 套接字

android - 应用程序在 android 中被杀死后后台服务不工作