- SĐT liên hệ: (+84) 926 397 972 | (+84) 333 371 116
[PE20267] ỨNG DỤNG CHAT P2P - Real-time Event-Driven Communication với Voice/Video Call -44%
Upload bởi:
admindev
360,000đ
200,000đ
Chat P2P là ứng dụng nhắn tin ngang hàng (peer-to-peer) được phát triển bằng Java và JavaFX, cho phép người dùng giao tiếp trực tiếp với nhau qua mạng LAN mà không cần máy chủ trung gian.
Java Swing
Source code
02/03/2026
Chat-app.rar
-
Chức năng đầy đủ và giống demo 100%
-
Hỗ trợ lắp đặt nếu cần
-
Hỗ trợ trả lời người mua sau khi tải
3.1. Xác thực người dùng
Đăng ký:
- Username tối thiểu 3 ký tự
- Lưu thông tin dạng `username:password` trong file
- Kiểm tra trùng lặp username
Đăng nhập:
- Xác thực với database local
- Tự động khởi tạo các port dựa trên hashCode của username
- Ports động: TCP (8888+), File (8890+), Voice (9000+), Video (9500+)
3.2. Peer Discovery
1. Khi login, app thực hiện 2 bước scan:
- Bước 1: Ping scan (ICMP + TCP 445/135) để tìm active hosts (timeout 8s)
- Bước 2: Scan discovery ports (11000-11049) trên các active hosts (timeout 60s)
2. Ưu tiên scan localhost trước (cùng máy)
3. Gửi message `ANNOUNCE` đến discovery port của mỗi IP
4. Peer nhận được sẽ response với thông tin của mình (`PEER:`)
5. Peer mới nhận thông tin về tất cả peers hiện có (`PEER_NOTIFY`)
6. Lưu peer info vào `ConcurrentHashMap<String, PeerInfo>`
7. Tự động refresh danh sách contacts
8. Heartbeat checker kiểm tra peer offline mỗi 10 giây
Thông tin peer bao gồm:
- IP address
- Chat port (8888-9887)
- File port (8890-9889)
- Voice port (9000-9999)
- Video port (9500-10499)
- Video audio port (9600-10599)
- Discovery port (11000-11049)
3.3. Chat 1-1
Gửi tin nhắn:
- Tự động kết nối socket với peer nếu chưa có
- Format: `MESSAGE:sender:content`
- Lưu chat history vào file local
- Hiển thị real-time với message bubble style
Nhận tin nhắn:
- Listen trên chat server port
- Parse message và hiển thị trong UI
- Lưu vào chat history
3.4. Chat Nhóm
Tạo nhóm:
1. Creator chọn tên nhóm và các thành viên
2. Lưu file nhóm cho tất cả thành viên: `username_group_groupname.txt`
3. Gửi `GROUP_SYNC` message đến tất cả thành viên
4. Các thành viên nhận được tự động tạo nhóm trong app
Format file nhóm:
```
GroupName
Creator
member1,member2,member3
```
Gửi tin nhóm:
- Format: `GROUP_MESSAGE:groupName:sender: message`
- Gửi đến tất cả thành viên (trừ bản thân)
- Hiển thị tên người gửi trong nhóm
3.5. Chia sẻ File
Cơ chế:
1. Người gửi copy file vào `shared_files/` với tên unique (timestamp_filename)
2. Gửi metadata đến peer: `FILE::filename|size|senderIp|uniqueFilename`
3. Người nhận tự động download file từ File Server của người gửi
4. Request format: `REQUEST_FILE:uniqueFilename`
5. Nếu file đã tồn tại, skip download
Giới hạn:
- Max file size: 50MB
- Hỗ trợ mọi loại file
- Hiển thị icon theo extension (🖼️ ảnh, 📄 PDF, 📝 Word, etc.)
- Image preview: Hiển thị preview ảnh trong chat (max 350x350)
- Double-click ảnh để xem full size
- Download on-demand với file chooser
3.6. Voice Call
Khởi tạo cuộc gọi:
1. Caller kết nối đến Voice Server của callee (port 9000+)
2. Gửi `VOICE_CALL:caller`
3. Callee nhận incoming call dialog (auto-reject sau 30s)
4. Accept/Reject
5. Nếu video call đang active, tự động reject voice call
Audio Streaming:
- Capture từ microphone: TargetDataLine
- Playback qua speaker: SourceDataLine
- Format: 16kHz, 16-bit, mono, signed little-endian (Windows compatible)
- Buffer size: 1024 bytes
- Noise gate: RMS threshold 500 (chỉ gửi khi có tiếng nói)
- Volume control: Tự động giảm -20dB để tránh echo
- Bidirectional streaming qua socket
- Real-time với latency thấp
- Retry mechanism: Thử mở microphone tối đa 3 lần (tránh conflict với video call)
3.7. Video Call
Architecture:
- 2 sockets: Video socket + Audio socket riêng biệt
- Video: Port 9500-10499
- Audio: Port 9600-10599
- Caller kết nối video trước, sau đó kết nối audio
- Receiver nhận video call, sau đó kết nối audio socket đến caller
Video Streaming:
1. Capture từ webcam (640x480) sử dụng Sarxos Webcam API
2. Convert BufferedImage → JPEG
3. Send qua DataOutputStream: `[size:4bytes][imageData]`
4. FPS: 15 frames/second (frame delay ~66ms)
5. Hiển thị local video (200x150 overlay góc phải trên) + remote video (800x600 main)
6. End signal: Gửi size = -1 để báo hiệu kết thúc
Audio Streaming:
- Auto-format detection: Thử little-endian → big-endian → unsigned
- Tương tự voice call nhưng chạy song song với video
- Volume control: Tự động giảm -20dB
- Đồng bộ hóa timing với video
- Cleanup hoàn toàn: Đóng microphone, speaker, webcam, sockets
UI Features:
- Local video: 200x150 (overlay góc phải trên)
- Remote video: 800x600 (main screen)
- Controls: Mute (🎤), Camera toggle (📷), End call (🔴)
- Status indicators: "Đang kết nối..." → "✅ Đã kết nối"
- Dark theme (1C1C1E background)
Typing Indicators:
- Gửi `TYPING` khi bắt đầu gõ (1-1 chat)
- Gửi `STOP_TYPING` khi dừng gõ hoặc gửi tin nhắn
- Group typing: `GROUP_TYPING:groupName:username`
- Auto-hide sau 5 giây nếu không nhận stop signal
- Hiển thị: "username đang gõ..." hoặc "X người đang gõ..."
1. Mục tiêu
- Xây dựng hệ thống chat P2P hoạt động trên mạng LAN
- Triển khai kiến trúc event-driven để xử lý real-time
- Hỗ trợ đa phương thức giao tiếp: text, file, voice, video
- Quản lý nhóm chat với nhiều thành viên
- Giao diện người dùng thân thiện, hiện đại
2. Công nghệ sử dụng
- Ngôn ngữ: Java 17
- GUI Framework: JavaFX 17.0.2
- Video Capture: Webcam Capture API (Sarxos 0.3.12)
- Audio: Java Sound API (với auto-format detection)
- Networking: Java Socket Programming
- Concurrency: Java Concurrent Collections, ExecutorService, AtomicBoolean
- Build Tool: Maven
- Dependencies: Gson, SLF4J
Xuất sắc
Rất tốt
Tốt
Trung Bình
Cần cải thiện
Bài đăng cùng danh mục:
Bài đăng mới nhất:
Đồ Án Tốt Nghiệp (9đ) Website Luyện Thi IELTS Tích Hợp AI (Next.js, React, TypeScript)
500,000đ
900,000đ
-44%
CyberShield Academy: Đồ Án Hệ Thống Giả Lập Phòng Chống Lừa Đảo Phishing (React & Spring Boot)
500,000đ
1,200,000đ
-58%
Xây dựng hệ thống phát hiện gian lận giao dịch tài chính (AI & Machine Learning)
480,000đ
1,200,000đ
-60%
Đồ Án Tốt Nghiệp (9,5Đ) - Xây Dựng Website Cho Thuê Xe Máy Điện (Tích Hợp AI & eKYC)
500,000đ
1,200,000đ
-58%


DevJava22
kiettel