NameSender 實作 Runnable,單一類別完成 UI、發送、接收。UI 含 Email 輸入框、送出按鈕、兩個狀態標籤。init() 建立 DatagramSocket(自動指派埠號)並解析主機位址(getCodeBase().getHost())。
action(),先中斷舊接收執行緒(interrupt(),避免 stop() 棄用)。@ 且非首字;@ 後有點號副檔名。NameCollector.BUFFER_SIZE)打包資料,建立 DatagramPacket 指定目標位址與埠號(COLLECTOR_PORT=8080),socket.send() 發送。this)監聽回應,標籤顯示等待計數。public void run() {
socket.receive(dp); // 阻塞等待
l2.setText(new String(dp.getData(), 0, 0, dp.getLength()));
}
收到回應即更新標籤,執行緒結束。使用者可隨時重送,舊執行緒會被中斷。HTML 頁面嵌入 <applet code=NameSender width=400 height=100> 即可部署。