2012-11-24 50 views
3

我想讓我的測試應用程序通過UDP套接字發送字符串。它繼續在soc.send(pac);行上拋出AndroidRuntime錯誤。我已在android_manifest文件中設置了必需的權限。通過UDP套接字發送字符串

import java.io.IOException; 
    import java.net.DatagramPacket; 
    import java.net.DatagramSocket; 
    import java.net.InetAddress; 
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 

    public class MainActivity extends Activity { 

    private EditText editText1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button1 = (Button) findViewById(R.id.button1); 
    editText1 = (EditText) findViewById(R.id.editText1); 
    button1.setOnClickListener(new View.OnClickListener() { 
     String text= editText1.toString(); 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      try { 
       udpmsg(text); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
    }); 
} 

    public void udpmsg(String text) throws java.io.IOException 
    { 
     InetAddress to = InetAddress.getByName("192.168.0.105"); 
     int port=55505; 
     DatagramSocket soc = new DatagramSocket(); 
     byte[] data = text.getBytes(); 
     DatagramPacket pac = new DatagramPacket(data, data.length, to, port); 
     soc.send(pac); 

     } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
     } 
    } 
+0

什麼是錯誤文本? – Ixx

+1

請使用'AsyncTask'來發送UDP數據包...網絡操作不應該在UI線程中完成... –

+0

@ lxx它顯示androidruntime錯誤logcat和手機上的應用程序關閉 –

回答

1

請注意:發送DatagramSocket類的方法還可以拋出java.lang.SecurityException異常這是一個運行時異常,你就不是在你的代碼的任何地方捕獲它。

快速檢查,更換趕上(IOException異常E){趕上(例外五){,告訴我們這是什麼修改後顯示在日誌中。

+0

這樣做,它現在顯示一個警告(system.err) –

+0

我告訴你複製錯誤信息,以便我們可以理解它是什麼意思 –