2013-04-23 52 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