2013-10-20 155 views
0

我在PC上運行一點C++/Java - Socket服務器(UDP)。 現在,我想連接我的Android應用程序到服務器。但是,當我發送一個包我的應用程序崩潰。Android - UDP客戶端錯誤

public void Socketinit() { 

    // 1. Socket erstellen! 
    try { 
     serverAddr = InetAddress.getByName("192.168.0.101"); 
     socket = new DatagramSocket(); 

    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SocketException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    createListeners(); 


} 

entprivate void createListeners() { 

    confirm.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

      buf = input.getText().toString().getBytes(); 
DatagramPacket packet = new DatagramPacket(buf,buf.length, serverAddr, SERVERPORT); 

      try { 
       socket.send(packet); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
    }); 

它crashs上 「socket.send(分組);」 我可以通過C++連接到我的服務器,因此服務器已啓動並正在運行。我的代碼中的客戶端問題在哪裏?

感謝

回答

0

你propably得到NetworkOnMainThreadException(見的logcat或在調試器中查看)。

您可以使用AsyncTask來解決此問題。 顯然,您還缺少清單中的Internet權限。

這裏是進一步的細節:How to fix android.os.NetworkOnMainThreadException?

+0

是的!我得到了NetworkOnMainThreadException!我不錯過互聯網許可,但AsyncTask解決了這個問題。謝謝! – Pete