這是一個基於 UDP 協議的簡易控制台聊天工具,支援好友管理(添加、刪除、列表)、消息收發、本地存儲好友信息。由於 UDP 無連接特性,採用定時輪詢方式接收消息。
DatagramSocket 和 DatagramPacket 將消息封裝發送到指定 IP 和端口(默認 8087)。Timer 和 TimerTask 每秒輪詢一次 socket.receive(),解析發送方 IP 並匹配好友列表顯示備註名。ArrayList 分別存儲好友 IP 和備註名。haoyou,格式為 名稱#IP,採用追加/覆蓋模式更新。huiHua() 進入會話模式。@list@ 顯示好友、@add@ 添加好友、@delete@ 刪除好友、00000 退出會話。send()。public static void send(String ip, String info) throws Exception {
byte[] message = info.getBytes();
InetAddress addr = InetAddress.getByName(ip);
DatagramPacket packet = new DatagramPacket(message, message.length, addr, PORT);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
}
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
socket1.receive(packet1);
String msg = new String(info1, 0, packet1.getLength());
String name = packet1.getAddress().toString().replace("/", "");
int idx = list.indexOf(name);
System.out.println((idx == -1 ? "陌生人" : listName.get(idx)) + " : " + msg);
packet1.setLength(info1.length);
} catch (Exception e) { e.printStackTrace(); }
}
}, 100, 1000);
導出為可執行 JAR 後,需編寫批處理腳本(.bat)啟動:
java -jar %1 pause
確保系統已安裝 JRE 環境。雙擊腳本即可運行雙開測試(需不同 IP/端口)。