2012-02-06 25 views
1

我正在尝试使用Java的DatagramSocketDatagramPacket类编写基本的客户端服务器。我有基本的代码设置,但我想要一种方法来定期从我的客户端发送100条消息到我的服务器,即1秒,2秒或5秒。java中的TimerTask和web套接字

基本上,我想是这样的:

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

在C语言中有一个睡眠的方法,但我不知道怎么做,在java中。任何人有任何建议?

回答

2

你总是可以打电话给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); 
1
Timer timer = new Timer(); 
timer.schedule(new Task(), 1000); //schedule the task to be run at 1 second (1000 mili sec) time 

下面是任务类的代码

class Task extends TimerTask 
{ 
    Task() 
    { 
    } 

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

Java是(当然你也有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。

必须覆盖那里的运行方法。