ABSTRACT
Several network systems are built to communicate with one another as well as made available through service-oriented architectures. In this project, the client server architecture is used to develop a chat application. Firstly a chat application is created for both Client and Server which is based on Transmission Control Protocol (TCP) where TCP is connection oriented protocol and is a reliable connection protocol. As security is the key factor while communicating over a network, so in this project, MySQL SSL protocol and hash function was used for the Database based on a numbers of benefits. The hash values of the real password and the random generated number (salt) is stored in the database. The original password is not stored on the system, making cracking of password much harder.
7
TABLE OF CONTENT
Title Page……………………………………………………………………….….i
Certification………………..………………………………………………….….ii
Approval Page………………………………………………………………..…iii
Dedication………………………………………………………………………...iv
Acknowledgement……………………………………………………...................v
Abstract…………………………………………………………………………..vi
Table of Contents………………………………………………………………...vii
List of Tables………………………………………………………………………x
List of Figures……………………………………………………………….……xi Chapter 1:
1.1 Introduction…………………………………………………………………..1
1.2 Background of the study………………………………………………………2
1.3 Statement of the problem………………………………………………………4
1.4 Objectives of the study………………………………………………………..4
1.5 Significance of the study………………………………………………………5
1.6 Scope of the study…………………………………………………………….6
1.7 Limitations…………………………………………………………………….6
1.8 Organization of the work……………………………………………………..7
1.9 Definition of terms…………………………………………………………….8
Chapter 2: Literature Review
2.1 Client-Server and other models……………………………………………….10
2.2 Client-Server communication…………………………………………………11
2.3 Host identification and service port…………………………………………...12
8
2.4 Sockets and socket based communication…………………………………….13
2.5 TCP/IP Socket programming………………………………………………….14
2.6 Socket programming in Java………………………………………………….15
2.7 Secure internet programming…………………………………………………16
2.8 Overview of secure socket layer (SSL)……………………………………….16
2.9 Security………………………………………………………………………..17
2.10 Hash functions……………………………………………………………….19
Chapter 3: SYSTEM ANALYSIS AND DESIGN
3.1 Methodology………………………………………………………………….21
3.2 Primary Data collection……………… …………………………………....26
3.2.1Secondary Data collection…………………………………………………26
3.3 Analysis of the existing system…………………………………………….26
3.4 Limitations of the existing system………………………………………….27
3.5 System Design…………………………………………………………….....27
3.6 Database Design…………………………………………………………….38
3.7 System Flowchart………..………………………………………………….40
3.8 Top Down Diagram…………………………………………………………41
3.9 Justification of the new system……………………………………………..41
Chapter 4: IMPLEMENTATION TESTING AND INTEGRATION
4.1 Choice of development tools…………..……………………….…………..42
4.2 System Requirements…………………………………………………….…43
4.2.1 Software Requirements……………………………………………………43
4.2.2 Hardware Requirements…………………………………………………..44
4.3 Implementation………………………………………………………………44
9
4.4 Testing………………………………………………………………………...51
4.4.1 Unit Test…………………………………………………………………….51
4.4.2 System Test………………………………………………………………..51
4.5 Integration…………………………………………………………………..52
Chapter 5: SUMMARY, RECOMMENDATIONS AND CONCLUSION
5.1 Summary………………………………………………………………….…...53
5.2 Limitations……………………………………………………………………53
5.3 Recommendations…………...………………………………………………54
5.4 BILL OF ENGINEERING MEASUREMENT AND EVALUATION………55
5.3 Conclusion..................................................................................................…...56
Bibliography………………………………………………………… …………58
Appendix A: PROGRAM CODES
BAChatClient.java…….………………..…………………………………………59
BAChatServer.java…….………………………………………………………….59
DatabaseManager.java…………………..………………………………………...62
Encryptor.java…………..……………….………………………………………...67
Appendix B: SAMPLE OUTPUT……………..………………………………..72
Appendix C: USER GUID………………………………………………………79
10
LIST OF TABLES
Table1: MySQL User Table……………………………………………………...39
11
LIST OF FIGURES
Figure 2.1: Media communication process (wired or wireless network)………...11
Figure 3.1: The Waterfall model…………………………………………………22
Figure 3.2: Client sending connection request to server…………………………28
Figure 3.3: Client-server connection established by using TCP………….……...29
Figure 3.4: Client-server chat Application by using TCP…………….………….33
Figure 3.5: Three stages of system failure………………………...……………...35
Figure 3.6: Multithreading flow diagram……………………...…………………40
Figure 3.7: Client-server chat application Architecture…..….………………......41
Figure 4.1: BAChatServer running………………………..…….……………….45
Figure 4.2: BAChatClient running………………………..…….………………..46
Figure 4.3: BAChatClient registration…………………..……….………………47
Figure 4.4: BAChatClient Chat room…………………...………………………..48
Figure 4.5: Encrypted messages and message types sent by users……………….49
12
Figure 4.6: MySQL Database…………………..………………………………...50
CHAPTER ONE
1.1 INTRODUCTION
Several network systems are built to communicate with one another and are made available through service-oriented architectures. In this project, we use the client server architecture to develop a secured Client-Server chat application. A chat application is created based on Transmission Control Protocol (TCP) where TCP is connection oriented protocol and in the end, multithreading is used to develop the application.
A client-server chat application consists of a Chat Client and a Chat Server and there exists a two way communication between them. Here, Message Processor is used to interpret message from the user, Message Interpreter is used to extract and pass the received message. Message Maker is used to construct back the message and Client Manager is used to maintain the clients list which the sender and receiver at both sides use to interact with each other.
13
In general, the server process will start on some computer system; in fact, the server should be executed before the client. Server usually initializes itself, and then goes to wait state or sleep state where it will wait for a client request. After that, a client process can start on either the same machine or on some other machine. Whenever the client wants some service from the server, it will send a request to the server and the server will accept the request and process it. After the server has finished providing its service to the client, the server will again go back to sleep, that is, waiting for the next client request to arrive. This process is repeated as long as the server processes is running. Whenever such request comes, the server can immediately serve the client and again go back to the waiting state for the next request to arrive.
1.2 BACKGROUND OF THE STUDY
Client server model is the standard model which has been accepted by many for developing network applications. In this model, there is a notion of client and notion of server. As the name implies, a server is a process (or a computer in which the process is running) that is offering some services to other entities which are called clients. A client on the other hand is process (which is running) on the same computer or other computer that is requesting the services provided by the server.
A chat application is basically a combination of two applications:
14
ï‚· Server application
ï‚· Client application
Server application runs on the server computer and client application runs on the client computer (or the machine with server). In this chat application, a client can send data to anyone who is connected to the server.
Java application programming interface (API) provides the classes for creating sockets to facilitate program communications over the network. Sockets are the endpoints of logical connections between two hosts and can be used to send and receive data. Java treats socket communications much as it treat input and output operations; thus programs can read from or write to sockets as easily as they can read from or write to files.
To establish a server connection, a server socket needs to be created and attached to a port, which is where the server listens for connections. The port recognizes the Transmission Control Protocol service on the socket. For instance, the email server runs on port 25, and the web server usually runs on port 80.
Server Execution: At server the side, a thread is created which receives numerous clients’ requests. It also contains a list in which Client’s name and IP addresses are stored. After that, it broadcast the list to all the users who are currently in chat
15
room and when a client logs out then server deletes that particular client from the list, update the list and then broadcast the list to all available clients.
Client Execution: A client firstly must have to register itself by sending username to the server and should have to start the thread so that system can get the list of all available clients. Then any of two registered clients can communicate with each other.