A lightweight, yet powerful client/server network system, developed entirely in C++. Providing seamless online functionality across multiple platforms.
Client-Server Computer Networking
Both the Crosscurrent client and server are fully compatible on Windows, Linux, and Mac OS. This allows for the client to be implemented on software for any platform. This also covers the importance of the server being deployed in a high performance environment such as Linux, while still being able to be developed and tested on any platform.
Built from the ground up in C++, the client/server implementation is designed to be as lightweight as possible while still providing powerful functionality. Due to the low overhead, the server can easily be hosted on low-specification hardware and scale up with an increasing user count.
The Crosscurrent client operates asynchronously, meaning it can send and receive data while performing other actions. This is important especially when implemented into a game engine, as it ensures the game maintains peak performance even when communicating back and forth with the server.
Similar to the client, the server also operates in an asynchronous fashion. This is important as it provides the server with the capacity to communicate with multiple clients/sessions and perform different actions at the exact same time.
All communications between the client and server are done through the use of packets. Packets consist of a sequence of bytes that are made up of an operation code and a varying amount of additional data. The operation code helps the client or server identify the packet that has been received and handle it accordingly. Through the use of packet data structures, the server and client can effectively encode a wide variety of numerical and string values to broadcast to one another.
Encryption plays a vital role in ensuring only valid packets are sent over the network, and helps prevent the interception of information. The Crosscurrent server and client thoroughly encrypt all network traffic before it is sent to ensure that only the receiving end will be able to correctly read the data.
When a packet is received, the packet handler identifies the operation code and directs the packet towards the correct handler. The packet can then be accurately decoded and perform actions as necessary to complete the operation.
The Crosscurrent server utilizes MySQL to handle data management. Through communications with the MySQL server, database transactions can be called to insert, update, or read data on demand. This functionality allows for the use of user accounts as well as a scalable variety of dynamic information.
Establishing a new connection with a database can be expensive. The Crosscurrent server maintains a pool of cached database connections that can be reused whenever a database request is required. This system allows for multiple database requests to get handled at once, while greatly improving performance and ensuring the database server does not get overwhelmed.
The Crosscurrent server manages all connected clients as individual sessions. These sessions can be differentiated and communicated with or disconnected.
Upon a successful login attempt through the client, the Crosscurrent server employs a secure user authentication system to ensure all corresponding account data is safely loaded. Upon authentication, the client session can then be identified by the server as a user account.
The log system within the Crosscurrent server provides a wide array of analytical utilities. The server can log information either in a database, within text files, or JSON format.
Developer Portfolio
By Mazen M.