说一下流程:
当一个数据报DatagramPacket做好了,就要用DatagramSocket.send()进行发送。
问题出现了:
这个时候需要启动一个定时器,当定时器到时间之后,还没有收到数据报的反馈,那么我们可以猜测:接受方没有收到我们发送的数据报。那么我们就要自动重新发送一个数据报。
问题是,这个定时器怎么实现。如果用Timer类来实现的话,那么在TimerTask重写的run()方法里面执行的必须是静态的代码(应该是这样吧),那么就没有办法重新发送这个DatagramPacket,因为它不是final的。请问各位大侠,怎么解决这个问题?
当一个数据报DatagramPacket做好了,就要用DatagramSocket.send()进行发送。
问题出现了:
这个时候需要启动一个定时器,当定时器到时间之后,还没有收到数据报的反馈,那么我们可以猜测:接受方没有收到我们发送的数据报。那么我们就要自动重新发送一个数据报。
问题是,这个定时器怎么实现。如果用Timer类来实现的话,那么在TimerTask重写的run()方法里面执行的必须是静态的代码(应该是这样吧),那么就没有办法重新发送这个DatagramPacket,因为它不是final的。请问各位大侠,怎么解决这个问题?
解决方案 »
- 帮忙解释下这是什么 异常
- 请教各位大侠们一个问题,26岁开始学编程觉得还有戏吗?
- 求:阴历和阳历相互转换的算法
- 利用網頁來傳送位置執行Java bean並且修改JAVA程式的檔案讀取位置
- 简单问题,举手之劳:找不到符号Protection??
- 请大家谈一下 "JavaBean" 在JSP中的使用,越详细越好,不要认为学习者很聪明,其实您的任何一个观点都能给大家很多启发!谈得好再加分.
- 如何把applet转化成应用程序?
- JAVA 安装设置。。。
- 熟悉jcreator的兄弟请进----轻松得分....
- JBuild 3.5运行速度真慢!有何方法可以提高速度???
- 关于java语言程序设计这书后面的习题
- 字符串通配府匹配算法
如果没有反馈,那么就应该重新发送数据报……可是TimerTask类中的run方法似乎不太适合用来重新发送数据报吧,因为这个DatagramSocket,DatagramPacket都不是final的
public void aMethod(final DatagramSocket ds, final DatagramPacket dp) {
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
ds.send(dp);
}
}, 10 * 1000);
}