This project is a foundational network programming library built with the C++ language and the Winsock API. It provides a simple and clean interface for developing network applications using both TCP and UDP protocols. The library is designed to be a starting point for building more complex network-enabled software.
- TCP Sockets: Provides reliable, connection-oriented communication with dedicated classes for clients and servers.
- UDP Sockets: Enables fast, connectionless communication for scenarios where low latency is critical.
- Packet Management: A robust
Packetclass for serializing and deserializing data, making it easy to send and receive structured information. - Endpoint Handling: Simple
EndpointandDNS_RESOLVERclasses to manage IP addresses, ports, and hostname resolution. - Error Management: Includes custom
NetworkErrorclasses to handle network-specific errors gracefully and efficiently.
To get a local copy of the project up and running, follow these simple steps.
- A C++ compiler (Visual Studio 2022 is recommended).
- Windows SDK.
- Clone the repository or download the source code as a ZIP file.
- Open the
Winsock.slnfile with Visual Studio. - Build the solution (
Ctrl + Shift + BorBuild -> Build Solution).
This project is currently in the early stages of development. While the core functionality is in place, there may be bugs, missing features, and areas for optimization. Your feedback and contributions are highly appreciated!
- [Add a list here] - For example:
- IPv6 support is not yet implemented.
- Asynchronous I/O (I/O completion ports) is not yet integrated for high-performance applications.
- Need to add unit tests for better code reliability.
- Further bug fixes and performance improvements.
We welcome contributions from the community! If you'd like to help, please feel free to:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature). - Make your changes.
- Commit your changes (
git commit -m 'Add new feature'). - Push to the branch (
git push origin feature/your-feature). - Create a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.