我正在尝试使用Java的DatagramSocket和DatagramPacket类编写一个基本的客户机服务器。我有基本的代码设置,但我想要一种方法,从我的客户端发送100条消息到我的服务器在固定的时间间隔,即1秒,或2秒,或5秒。
基本上,我想要这样的东西:
while (count != 0)
sleep (1);
create message packet;
send message packet;
count--;在C中有一个睡眠方法,但我不确定在java中如何做到这一点。有人有什么建议吗?
发布于 2012-02-06 12:41:38
您可以随时调用Thread.sleep(),它在很大程度上等同于C中的sleep函数。但是我建议您使用另一种方法来完成您的程序。看看ScheduledThreadPoolExecutor类,它允许您安排一段代码定期运行:
Runnable myCommand = new Runnable() {
public void run() {
// Do some work
}
};
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(4);
// Execute the command every second = 1000 milliseconds
executor.scheduleAtFixedRate(myCommand, 0, 1000, TimeUnits.MILLISECONDS);发布于 2012-02-06 12:43:19
Timer timer = new Timer();
timer.schedule(new Task(), 1000); //schedule the task to be run at 1 second (1000 mili sec) time以下是Task类的代码
class Task extends TimerTask
{
Task()
{
}
public void run()
{
//create datagram socket
//create datagram packet
//send the packet
}
}发布于 2012-02-06 13:46:28
Java比C更高级(当然你在C中也有线程库:),我的意思是这是作为Java语言支持而不是库支持的)
因此,您可以使用Timer类。
谈到主要功能,您会得到如下内容
DatagramSocket socket = new DatagramSocket();
byte[] buf = new byte[256];
InetAddress address = InetAddress.getByName("sample-address");
DatagramPacket packet = new DatagramPacket
(buf, buf.length,
address, 4445);
socket.send(packet); 在实现TimerTask类中。
必须覆盖那里的run方法。
https://stackoverflow.com/questions/9155615
复制相似问题