我想通过UDP协议反复将按钮状态,操纵杆值等数据从我的应用程序发送到服务器以控制无人机,我搜索并尝试了无限while循环方法,但它使我的应用程序崩溃.我没有太多关于工作的知识,我只是想要一个客户端,发送一个字符串/JSON对象在后台连续作为数据报到定义的IP和端口。欢迎客户端的任何代码片段或建议。谢谢。目前使用Asynctask,但有人告诉我,它的弃用和不适合。代码如下。(重新发布)
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
public class UDP_Client {
public String Message;
@SuppressLint({"NewApi", "StaticFieldLeak"})
public void sendUDP() {
AsyncTask<Void, Void, Void> async_cient = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params){
try (DatagramSocket ds = new DatagramSocket()) {
DatagramPacket dp;
dp = new DatagramPacket(Message.getBytes(), Message.length(), InetAddress.getByName("192.168.***.***"), 3000);
ds.setBroadcast(true);
ds.send(dp);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
};
async_cient.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
字符串
2条答案
按热度按时间u2nhd7ah1#
我在主Activity中的一个单独的线程中使用while true(无限循环)完成了它。它工作得很好!
字符串
svgewumm2#
如果你想在后台运行它。你需要使用服务。