java和web套接字中的TimerTask

java和web套接字中的TimerTask,java,sockets,timer,timertask,Java,Sockets,Timer,Timertask,我正在尝试使用Java的DatagramSocket和DatagramPack类编写一个基本的客户机服务器。我已经设置了基本代码,但我希望有一种方法可以以固定的间隔(即1秒、2秒或5秒)将100条消息从客户端发送到服务器 基本上,我想要的是: while (count != 0) sleep (1); create message packet; send message packet; count--; 在C语言中有一个sleep方法,但我不确定在java中如何做到这一点。有人有什么建议吗

我正在尝试使用Java的
DatagramSocket
DatagramPack
类编写一个基本的客户机服务器。我已经设置了基本代码,但我希望有一种方法可以以固定的间隔(即1秒、2秒或5秒)将100条消息从客户端发送到服务器

基本上,我想要的是:

while (count != 0)
sleep (1);
create message packet;
send message packet;
count--;

在C语言中有一个sleep方法,但我不确定在java中如何做到这一点。有人有什么建议吗

您始终可以调用
Thread.sleep()
,这在很大程度上相当于C中的
sleep
函数。但是我建议您使用另一种方法来完成程序。看看这个类,它允许您计划一段代码定期运行:

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);
下面是Task类的代码

class Task extends TimerTask
{
    Task()
    {
    }

    public void run()
    {
        //create datagram socket
        //create datagram packet
        //send the packet
    }
}

Java的级别比C高(当然,在C中也有线程库:),我的意思是,Java语言支持比库支持更高)

因此,您可以使用
计时器

谈到主要功能,您将有如下内容

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方法

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);