A powerful peer-to-peer Java chat application designed for seamless communication between devices on the same Local Area Network (LAN). Built with advanced Socket programming, multithreading, and an intuitive Swing GUI for cross-platform compatibility.
🔥 Zero Internet Required - Works entirely on your local network
⚡ Real-time Communication - Instant message delivery with TCP protocol
🔍 Auto Friend Discovery - Automatically find other users on your network
💾 Persistent Chat History - All conversations saved locally and securely
🎨 Modern Single-Page Interface - React-inspired design with smooth navigation
📱 Fully Responsive - Adapts to any screen size and resolution
🌐 Cross-Platform Compatible - Works on Windows, macOS, and Linux
Ready-to-use installers for popular operating systems:
💻 Windows Installer (.exe) - One-click installation
🍎 macOS App Bundle (.dmg) - Drag and drop installation
Need support for other platforms? Contact us at: shoyebff45@gmail.com
Clean and intuitive start page
Built with a contemporary approach similar to modern web applications, featuring:
- State Management: React-inspired state handling using Java interfaces and classes
- Smooth Navigation: Seamless page transitions without window reloads
- Enhanced UX: Improved accessibility and user experience
Intuitive navigation bar for easy access to all features
Advanced network scanning capabilities:
- UDP Protocol: Lightning-fast user detection on the same network
- Real-time Updates: Automatically refreshes available users
- Zero Configuration: Works out-of-the-box without manual setup
Your data remains private and secure:
- JSON Storage: Efficient data serialization using GSON library
- Local-Only: All data stored exclusively on your device
- Persistent History: Conversations and friend lists automatically saved
Flexible friend management:
- IP Address Support: Add friends directly using their IP address
- Friend Requests: Secure friend request system
- Contact Management: Easy-to-use friend list interface
Simple and secure friend addition process
Adapts to any screen configuration:
- Dynamic Layouts: Automatically adjusts to window resizing
- Multi-Resolution Support: Works on various screen sizes
- Consistent Experience: Maintains functionality across different dimensions
Experience instant communication:
- TCP Protocol: Reliable message delivery
- Multi-threading: Smooth performance without UI freezing
- Live Status Updates: See when friends are online and available
Modular design for maximum maintainability and scalability:
📁 LAN-Messenger/
├── 📁 lib/ # External JAR dependencies
├── 📁 public/ # Static assets and images
│ └── 📁 images/
│ ├── 📁 app/ # Application icons and graphics
│ └── 📁 readme/ # Documentation images
└── 📁 src/
└── 📁 main/
└── 📁 java/
└── 📁 com/
└── 📁 lanmessanger/
├── 📁 app/ # Application entry point and configuration
├── 📁 database/ # Data persistence and management
├── 📁 models/ # Data models and entity schemas
├── 📁 network/ # Core networking functionality
│ ├── 📁 client/ # Client-side communication
│ ├── 📁 clientHandler/ # Connection management
│ ├── 📁 discovery/ # Network discovery logic
│ └── 📁 server/ # Server-side operations
└── 📁 ui/ # User interface components
├── 📁 components/ # Reusable UI components
│ ├── 📁 addFriendPage/
│ ├── 📁 chatPage/
│ ├── 📁 navBar/
│ └── 📁 scannerPage/
├── 📁 pages/ # Application pages
├── 📁 router/ # SPA-style navigation
├── 📁 state/ # Centralized state management
└── 📁 utils/ # Helper utilities
| Component | Responsibility | Key Features |
|---|---|---|
app/ |
Application lifecycle and global configuration | Launch logic, settings management |
network/ |
Core networking operations | Socket programming, P2P connections, discovery |
ui/ |
User interface and user experience | Swing components, responsive design |
models/ |
Data structures and persistence | Entity definitions, JSON serialization |
database/ |
Local data management | Friend lists, chat history, user preferences |
- ☕ Java 17+ - Modern Java features and performance optimizations
- 🎨 Java Swing - Cross-platform GUI framework (
javax.swing) - 🌐 Java Networking - Socket programming with TCP/UDP protocols (
java.net) - ⚡ Collections Framework - Efficient data structure management
- 📄 Gson Library - JSON serialization and deserialization (
com.google.gson) - 🎯 Ikonli FontAwesome - Modern icon pack (
org.kordamp.ikonli)
- 💻 VS Code IDE - Modern development environment
- 📚 Git & GitHub - Version control and collaboration
- 🔧 Maven - Dependency management and build automation
Ensure you have Java 17 or higher installed:
java --version-
Clone the Repository
git clone https://github.com/Shoyeb45/lan-messanger.git cd lan-messenger -
Development Setup (VS Code)
- Install Extension Pack for Java by Microsoft
- Navigate to
src/main/java/com/lanmessanger/Main.java - Click the Run button above the main method
-
Alternative Build Methods
# Using Maven (if pom.xml is configured) mvn clean compile exec:java # Direct compilation (for simple setups) javac -cp "lib/*:src" src/main/java/com/lanmessanger/Main.java java -cp "lib/*:src" com.lanmessanger.Main
We welcome contributions! Here's how to get started:
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Implement Your Feature
- Write clean, documented code
- Test thoroughly on multiple platforms
- Follow existing code style conventions
-
Submit Your Changes
git add . git commit -m "Add: your feature description" git push origin feature/your-feature-name
-
Create a Pull Request
- Include detailed description of changes
- Add screenshots for UI changes
- Reference any related issues
LAN Messenger implements a sophisticated peer-to-peer networking model:
Decentralized P2P communication between LAN Messenger instances
Key Networking Features:
- TCP Protocol: Reliable message delivery with connection-oriented communication
- UDP Discovery: Fast and lightweight user detection broadcasts
- Multi-threading: Concurrent handling of multiple connections
- Dual Role Architecture: Each instance acts as both client and server
Each instance simultaneously operates as client and server
Built with a modern, component-based approach:
Hierarchical component structure with centralized state management
UI Design Principles:
- Single Page Application: Smooth navigation without window refreshes
- Component Reusability: Modular design for maintainable code
- State Management: Centralized application state similar to modern web frameworks
- Responsive Layout: Dynamic adaptation to different screen sizes
Requirements:
- Two or more devices on the same Wi-Fi network
- LAN Messenger installed on each device
Step-by-Step Testing:
-
Launch Application
- Open LAN Messenger on both devices
- Ensure both devices are connected to the same network
-
Establish Connection
- On Device A: Navigate to "Add Friend" page
- Enter the IP address of Device B
- Click "Add Friend"
-
Accept Friend Request
- Device B will receive a friend request notification
- Accept the request to establish connection
-
Test Messaging
- Send messages between devices
- Verify real-time delivery and persistence
- Test various message types and lengths
Success Indicators:
- ✅ Real-time message delivery
- ✅ Message persistence after app restart
- ✅ Online/offline status updates
- ✅ Stable connection during extended use
| Platform | Status | Notes |
|---|---|---|
| Windows 10/11 | ✅ Full Support | Native installer available |
| macOS | ✅ Full Support | DMG package available |
| Linux (Ubuntu/Debian) | ✅ Full Support | JAR executable |
| Linux (Other Distros) | ✅ Compatible | May require Java installation |
- Java Runtime: Version 17 or higher
- RAM: Minimum 512MB available
- Network: Active LAN/Wi-Fi connection
- Storage: 50MB free space
- Professor Zabi - Academic guidance and mentorship
- Baeldung - Comprehensive Java Socket programming tutorials
- Bro Code - Excellent Java Swing video tutorials
- AI Assistants - Code review, debugging assistance, and optimization suggestions
- Linus Torvalds - For creating Git, enabling collaborative development
- Google Gson - JSON serialization library
- Ikonli - Icon pack integration
- Java Development Kit - Core runtime and development tools
This project is licensed under the MIT License - see the LICENSE file for complete details.
Key Points:
- ✅ Commercial use allowed
- ✅ Modification and distribution permitted
- ✅ Private use encouraged
- ❗ No warranty provided
Found this project helpful? ⭐ Star the repository to show your support!
Questions or Issues? 📧 shoyebff45@gmail.com
Want to Contribute? 🚀 Check out our Contributing Guidelines
Keywords: LAN Messenger, Java Chat Application, P2P Messaging, Local Network Communication, Socket Programming, Real-time Chat, Cross-platform Messaging, Network Discovery, Peer-to-Peer, Java Swing GUI, TCP/UDP Protocol, Multithreading, Local Area Network, Instant Messaging, Java Networking












