Click here to Skip to main content
15,868,141 members
Articles / Desktop Programming / MFC
Article

Creating a Client/Server Framework

Rate me:
Please Sign up or sign in to vote.
3.71/5 (6 votes)
13 Nov 20022 min read 132.9K   4K   56   23
Create a complete client/server framework with added server features, including activity logging, minimizing to the system tray, password and version checking, as well as user maintenance.

Sample Image - ClientServer.jpg

Introduction

In creating my own multiplayer game played over the Internet, I first had to create a client/server framework so that players could interact with each other. After I finished creating the game, I generalized this framework for others to use.

Client/Server framework

For those not familiar with how a client/server framework works, one server sits on a computer somewhere out on the Internet, waiting for clients to connect. When clients successfully connect and log on to this server, they send messages to other clients via the server. This framework may be used for various applications, such as a chat application, a multiplayer game, or any application where clients need to communicate with each other.

Creating the Client/Server framework

The program that I have created includes some added features that I believe most people running this would benefit from. From incorporating Chris Maunder and Warren Young's work, you have the option of the server minimizing to the system tray, so that it is out of the way. To fully benefit from this feature, you may want to create a shortcut to the server's executable, and have this shortcut minimize on startup. Also, by using Adam Clauss's inifile class, you have the option of forcing users to log on with a password. Note that if you use this option, you must create a procedure for people to create a new account and password, as this is not included. If different versions of your program are not compatible with each other, you may force users to all upgrade to the latest version using this framework. Finally, you may easily set how many days between logons must pass before a user is deleted from the user file.

If you are going to use this as a basis for your app, I recommend that you create a new project for the client program; then copy and paste the code. This is so that you may choose the name of the application yourself, as well as whether it's dialog-based or not. However, you don't have to recreate the server; users will never actually see this program.

One last thing to note is that the computer that runs the server must accept TCP connections on the port number that you run your application on. Therefore, make sure this rule is created on your firewall if you are running one. Also, the default IP address of the client program is 127.0.0.1, which translates to the local computer. Therefore, to connect client programs to the server residing on different computers, you must specify the server's actual IP address (type ipconfig at the server computer's command Prompt to find out its IP address).

Good luck, and I hope that I have provided you with a head start to creating your client/server application!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Canada Canada
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionUpdate? Pin
LordHogFred1-Dec-09 0:46
LordHogFred1-Dec-09 0:46 
Generalclass CSystemTray Pin
Em_Bang_Lang7-Jan-06 6:33
Em_Bang_Lang7-Jan-06 6:33 
GeneralRe: class CSystemTray Pin
Jeff Miles8-Jan-06 7:15
Jeff Miles8-Jan-06 7:15 
Generalfile user.ini Pin
Em_Bang_Lang3-Jan-06 5:01
Em_Bang_Lang3-Jan-06 5:01 
GeneralRe: file user.ini Pin
Jeff Miles3-Jan-06 5:50
Jeff Miles3-Jan-06 5:50 
GeneralRe: file user.ini Pin
Em_Bang_Lang4-Jan-06 5:43
Em_Bang_Lang4-Jan-06 5:43 
GeneralSend File Pin
toduto31-Mar-05 0:40
toduto31-Mar-05 0:40 
GeneralRe: Send File Pin
Jeff Miles31-Mar-05 16:47
Jeff Miles31-Mar-05 16:47 
GeneralRe: Send File Pin
uno freeware13-Oct-05 16:51
uno freeware13-Oct-05 16:51 
GeneralRe: Send File Pin
uno freeware13-Oct-05 16:51
uno freeware13-Oct-05 16:51 
GeneralInternet Pin
all4me27-Sep-04 15:36
all4me27-Sep-04 15:36 
Generalport number problem Pin
ordered_chaos11-Sep-04 10:58
ordered_chaos11-Sep-04 10:58 
GeneralRe: port number problem Pin
Jeff Miles14-Sep-04 14:57
Jeff Miles14-Sep-04 14:57 
GeneralSend Data Pin
pel-nn7-Jul-04 6:58
pel-nn7-Jul-04 6:58 
GeneralRe: Send Data Pin
uno freeware13-Oct-05 16:49
uno freeware13-Oct-05 16:49 
Generaldetails Pin
dudic13-Mar-03 7:09
dudic13-Mar-03 7:09 
GeneralRe: details Pin
Jeff Miles13-Mar-03 10:59
Jeff Miles13-Mar-03 10:59 
QuestionExcellent but perhaps better explanation within article? Pin
freakmaster27-Nov-02 16:38
freakmaster27-Nov-02 16:38 
AnswerRe: Excellent but perhaps better explanation within article? Pin
Snyp24-Jun-03 5:41
Snyp24-Jun-03 5:41 
GeneralSecurity... Pin
Daniel Turini14-Nov-02 22:16
Daniel Turini14-Nov-02 22:16 
GeneralRe: Security... Pin
Jeff Miles15-Nov-02 7:46
Jeff Miles15-Nov-02 7:46 
GeneralPoor article Pin
Victor Vogelpoel14-Nov-02 20:31
Victor Vogelpoel14-Nov-02 20:31 
GeneralRe: Poor article Pin
Jeff Miles15-Nov-02 7:41
Jeff Miles15-Nov-02 7:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.