| 发表于:2007-02-02 10:31:19 楼主 |
最近做一个awt的udp小程序 服务器端要实时检测端口 需要一个循环实现 不知道在线程中如何实现安全中止线程 用thread.stop()界面会有问题 简单代码如下: public class udp_thread extends thread { private int port; private int buffer_size; private jtextarea mem_message; public udp_thread(int port, int buffer_size, jtextarea mem_message) { this.port = port; this.buffer_size = buffer_size; this.mem_message = mem_message; } public void run() { byte[] buffer = new byte[buffer_size]; try { datagramsocket server = new datagramsocket(port); while(true) { datagrampacket packet = new datagrampacket(buffer, buffer.length); server.receive(packet); if (packet.getlength() <= 0) continue; this.respond(packet); } } catch (exception ex) { system.out.println(ex.getmessage()); } } public void respond(datagrampacket packet) { byte[] buffer = new byte[packet.getlength()]; system.arraycopy(packet.getdata(), 0, buffer, 0, packet.getlength()); try { string str = new string(buffer, "8859_1 "); mem_message.append(packet.getaddress() + " [ " + packet.getport() + "] : " + str + "\r\n "); } catch (exception ex) { } } } |
|
|
|
|