2013-04-23 53 views
0

我的套接字连接有问题。它说在这条线上有一个空pionter例外:Android套接字连接空指针异常

Socket client = new Socket(ip,8000); 

但是Ip可以,端口应该OK!

下面是完整的代码:

public class socket { 

public static void out(String out, Context context){ 

    final String PREFS_NAME = "SAVEDIP"; 
    final String PREF_IP = ""; 
    String ip = null; 
    SharedPreferences pref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
    ip = pref.getString(PREF_IP, ""); 
    Log.e("IP", ip); 


    try { 
     Socket client = new Socket(ip,8000);  
     //PrintWriter output = new PrintWriter(client.getOutputStream(), true); 
     //BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
     //output.println(out); 
     Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show(); 
     //output.close(); 
     //in.close(); 
     client.close(); 
    } catch (UnknownHostException e) { 
     Log.e("TAG", "UnknowHostExeption"); 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     Log.e("TAG", "IOExeption"); 
     e.printStackTrace(); 
    } 
} 

}

我传递的背景和文本与此:

c = getApplicationContext(); 
socket.out("exit", c); 

我得到的错误是:

04-23 15:58:30.577: E/TAG(26540): IOExeption 
04-23 15:58:30.577: W/System.err(26540): java.net.SocketException: The operation timed out 
04-23 15:58:30.577: W/System.err(26540): at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method) 
04-23 15:58:30.577: W/System.err(26540): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:115) 
04-23 15:58:30.577: W/System.err(26540): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:244) 
04-23 15:58:30.577: W/System.err(26540): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:219) 
04-23 15:58:30.577: W/System.err(26540): at java.net.Socket.startupSocket(Socket.java:781) 
04-23 15:58:30.577: W/System.err(26540): at java.net.Socket.tryAllAddresses(Socket.java:194) 
04-23 15:58:30.577: W/System.err(26540): at java.net.Socket.<init>(Socket.java:258) 
04-23 15:58:30.587: W/System.err(26540): at java.net.Socket.<init>(Socket.java:222) 
04-23 15:58:30.587: W/System.err(26540): at com.example.andremote.socket.out(socket.java:28) 
04-23 15:58:30.587: W/System.err(26540): at com.example.andremote.Remote$11.onClick(Remote.java:175) 
04-23 15:58:30.587: W/System.err(26540): at android.view.View.performClick(View.java:2408) 
04-23 15:58:30.597: W/System.err(26540): at android.view.View$PerformClick.run(View.java:8817) 
04-23 15:58:30.597: W/System.err(26540): at android.os.Handler.handleCallback(Handler.java:587) 
04-23 15:58:30.597: W/System.err(26540): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-23 15:58:30.597: W/System.err(26540): at android.os.Looper.loop(Looper.java:143) 
04-23 15:58:30.597: W/System.err(26540): at android.app.ActivityThread.main(ActivityThread.java:4914) 
04-23 15:58:30.607: W/System.err(26540): at java.lang.reflect.Method.invokeNative(Native Method) 
04-23 15:58:30.607: W/System.err(26540): at java.lang.reflect.Method.invoke(Method.java:521) 
04-23 15:58:30.607: W/System.err(26540): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
04-23 15:58:30.607: W/System.err(26540): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
04-23 15:58:30.607: W/System.err(26540): at dalvik.system.NativeStart.main(Native Method) 

请告诉我犯了一个错误,我不能找到solotiun!

回答

0

显然在上右侧空此行

ip = pref.getString(PREF_IP, ""); 

返回所以你的ip变量仍然获得零或使无效值,当你把它传递给Socket构造作为参数,因为您的IP变量(主机名)无效它会产生IOException。尝试检查你的ip变量是否为null,或者在将它传递给Socket构造函数之前。

+0

我检查了它为空,但它不为空。它是192.168.1.2,因为它应该是:( – Robert 2013-04-23 14:22:13

+0

问题是在服务器!我发现它。谢谢你的帮助!!! – Robert 2013-04-23 14:27:03

+0

很高兴你解决了它,没什么:) – 2013-04-23 15:32:07