2017-10-28 39 views
-2

我創建了一個類TFTPClient,它允許用戶連接到服務器並能夠通過類方法發出某些請求。我已經在Android Studio之外創建並測試了這個,但是當我轉移並編譯我的代碼時,出現錯誤。該錯誤是在MainActivity.java創建類對象時,但調用某些方法DatagramSocket - java.lang.NullPointerException [Andriod]

TFTPClient c = new TFTPClient(); //Works fine 

try { 
    c.sendAndReceive(); //Get the error 
} catch (UnknownHostException e) { 
    e.printStackTrace(); 
} 

這裏引起的,但不能是sendAndReceive方法的代碼

public void sendAndReceive() throws UnknownHostException { 
    int sendPort; 
    sendPort = SERVER_RECV_PORT; //(60700) 
    int clientConnectionPort = -1; 
    InetAddress serverAddress = InetAddress.getByName("172.17.49.153"); 

    try { 
     clientConnectionPort = sendRequest(serverAddress, sendPort, "all"); 
    } 
    catch (IOException e) { 
     //System.out.println("error"); 
    } 
    receive(serverAddress, clientConnectionPort); 
} 

回答

-1

你確定請求互聯網權限?根據Finley Smith,在Android的舊版本中,它不允許您在未經許可的情況下訪問互聯網。 你可以將下面這行代碼在AndroidManifest文件中添加Internet權限:

<uses-permission android:name="android.permission.INTERNET" /> 

另外,你能不能從logcat中發送錯誤消息,以便有更多的信息熄滅的下一次,謝謝!

+0

你錯了。 [你仍然需要互聯網許可](https://developer.android.com/training/basics/network-ops/connecting.html)。即使是最新的文檔也說明了這一點。 [互聯網許可證上的文檔說它不被棄用](https://developer.android.com/reference/android/Manifest.permission.html#INTERNET),這意味着它仍然是必需的。不推薦在更高版本中使用的權限,但不能刪除以保持向後兼容性。你需要互聯網許可,不管版本是什麼 – Zoe

+0

如果我們知道錯誤是什麼,它仍然是最好的。 –

+0

當你有足夠的聲望時,你可以通過評論做到這一點。與此同時,確保即使源代碼指向Google Play而不是Android操作系統本身,也不要過分依賴答案。現在這是一個帶有錯誤信息的答案,這個問題是重複的和無關緊要的,因爲它沒有MCVE。而不是本質上增加一個榮耀的評論作爲一個答案哪裏有一個部分,使它錯了 – Zoe