Android:侦听传入的UDP消息?

时间:2014-05-20 19:38:41

标签: android udp

我有一个应用程序android将数据发送到服务器(PC),但我没有收到从PC到应用程序的任何数据。而且,我如何为传入的UDP消息做一个监听器?

因为即使应用关闭,我也需要一个应用程序一直在运行。我如何确保我的“听众”服务始终在运行? 当邮件从服务器到达智能手机时,我希望收到通知。

这是我的代码:

public class MainActivity extends Activity implements TextWatcher, OnClickListener  {

Client client;
EnvoyerMess envoyermessage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    client = new Client();
    client.execute();
           lancer.setOnClickListener( new OnClickListener() {

         @Override
         public void onClick(View v)  {

             envoyermessage=new EnvoyerMess();
             envoyermessage.execute();

       }

      });

}

class Client extends AsyncTask<Void,Void,String>{

     DatagramSocket client;
     String test ;


    public String doInBackground(Void...params){         
        String result=null;
        int port=4000;

        DatagramSocket clientSocket = null;
        byte[] receiveData = new byte[256];
        DatagramPacket packet = new DatagramPacket(receiveData, receiveData.length);
            try{ 
                InetAddress adresse = InetAddress.getByName("10.0.2.2");
                clientSocket = new DatagramSocket(port);
                clientSocket.receive(packet);
                result = new String(packet.getData());                          
                           Log.d("","Received :) ");
        }catch (Exception e) {
            e.printStackTrace();

        } finally {
            if (clientSocket != null) {
                clientSocket.close();             
            }
        }
         return result;
    }


    public void onPostExecute(String result){ 
         if (result != null) { 
             //createNotify(); 
                 TextView tv = (TextView) MainActivity.this.findViewById(R.id.textView1);
              tv.setText(result);

    }
}

提前感谢..

1 个答案:

答案 0 :(得分:1)

我首先要确保PC实际上是将数据包发送到正确的IP地址。通过使用wireshark,http://www.wireshark.org/或类似工具来完成此操作。

要确保您的任务正在运行,即使应用程序已关闭,您也需要一项服务http://developer.android.com/guide/components/services.html

编辑:

我使用的是模拟器,您必须先在avd路由器中启用重定向。此链接提供了有关如何完成此developer.android.com/tools/devices/emulator.html#redirection的说明(我无法发布链接,因此您必须复制粘贴)。

如果您在Windows中开发,则还需要启用telnet。此链接描述了完成该社交的步骤。技术全文/微软账号/磁带/文件/电子邮件:http://www.windows-7-enabling-artnet-client.aspx(再次,复制粘贴)