Android异步任务发送UDP数据包

Android异步任务发送UDP数据包,android,sockets,android-asynctask,udp,Android,Sockets,Android Asynctask,Udp,我想使用asynctask发送数据报包,但它不起作用 我已经添加了所有可能需要的权限 我认为问题可能出在 socket.send(packet); 请帮我解决这个问题:) 是的,您需要实际分配套接字,异常是空指针,因为您声明了套接字,但在使用它之前没有分配它。现在,这应该可以工作了,但是您将不断地分配一个新的套接字。您应该使用我在下面插入的行:socket=new DatagramSocket(),并将其放在onCreate中 protected Boolean doInBackg

我想使用asynctask发送数据报包,但它不起作用

我已经添加了所有可能需要的权限

我认为问题可能出在

      socket.send(packet);
请帮我解决这个问题:)


是的,您需要实际分配套接字,异常是空指针,因为您声明了套接字,但在使用它之前没有分配它。现在,这应该可以工作了,但是您将不断地分配一个新的套接字。您应该使用我在下面插入的行:socket=new DatagramSocket(),并将其放在onCreate中

protected Boolean doInBackground(String... arg0) {
        byte [] ip_bytes = new byte[] {(byte)192,(byte)168,(byte)1,(byte)1};
        try {
            inet_addr = InetAddress.getByAddress(ip_bytes );
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.e("AT command: ","at_cmd)");    
        byte[] buffer = (at_cmd + "\r").getBytes();
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length,     inet_addr, PORT);
            try {
                socket= new DatagramSocket();
                socket.send(packet);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        Log.e("///send at command","at command topic");
        return null;
    } 

您没有初始化
套接字

public ATcommandThread()
{

  socket = new DatagramSocket();
}
protected Boolean doInBackground(String... arg0) {
        byte [] ip_bytes = new byte[] {(byte)192,(byte)168,(byte)1,(byte)1};
        try {
            inet_addr = InetAddress.getByAddress(ip_bytes );
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.e("AT command: ","at_cmd)");    
        byte[] buffer = (at_cmd + "\r").getBytes();
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length,     inet_addr, PORT);
            try {
                socket= new DatagramSocket();
                socket.send(packet);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        Log.e("///send at command","at command topic");
        return null;
    } 
public ATcommandThread()
{

  socket = new DatagramSocket();
}