client server project report

  • Upload
    yousaf

  • View
    306

  • Download
    9

Embed Size (px)

Citation preview

  • 8/20/2019 client server project report

    1/39

     

    A Project Report

    on

    Chat Application

    Submitted By:

    Kumar Gaurav (MRT09UGBCS013)

    Faculty of Electronics, Informatics & Computer Engineering 

    2012-13

  • 8/20/2019 client server project report

    2/39

    CERTIFIC TE

     

    This is to certify that the project work under titled as

    Chat Application

    Is the bonfire work of

    Kumar Gaurav (MRT09UGBCS013)

    during this project submission as a partial fulfillment of the requirement for the

    System Design Project of Bachelor in Technology VII Semester, of the Shobhit

    University, Meerut.

    Project Supervisor (C.E. Branch) H.O.D of Computer Dept.

  • 8/20/2019 client server project report

    3/39

      CKNOWLEDGEMENT

    If words are considered as a symbol of approval and token of appreciation then let

    the words play the heralding role expressing my gratitude.

    The satisfaction that accompanies that the successful completion of any task

    would be incomplete without the mention of people whose ceaseless

    cooperation made it possible, whose constant guidance and encouragement

    crown all efforts with success. We are grateful to our project guide Ms. Sangeeta

    Solanki for the guidance, inspiration and constructive suggestions that helpful us in

    the preparation of this project. We also thank our colleagues who have helped in

    successful completion of the project.

    Kumar Gaurav

  • 8/20/2019 client server project report

    4/39

    Table of contents

    Sr. No Topic Page Number

    1 Introduction 05

    2 System Analysis 07

    2.1 Definition 07

    2.2 Description of Present System 07

    2.3 Limitation of Present System 07

    2.4 Proposed System 08

    2.5 Feasibility Study 08

    2.6 Project Planning & Scheduling 11

    2.7 Software Engineering Paradigm Applied 13

    3 System Specification 14

    3.1 H/W Specification 14

    3.2 S/W Specification 15

    4 Organization Profile 16

    5 Specification of Language 17

    6 System Design 24

    6.1 Output Design 24

    6.2 Input Design 25

    6.3 Logical Design 25

    6.4 Data Flow Diagram 26

    6.5 Data Directory 32

    6.6 ER Diagram 34

    6.7 Process Modal 36

    7 Coding 37

    8 Testing 40

    9 Security 42

    10 Screen Shots 43

    11 Future Enhancement 49

    12 Conclusion 50

    13 Bibliography 51

  • 8/20/2019 client server project report

    5/39

    INTRODUCTION

    1. INTRODUCTION

    Teleconferencing or Chatting, is a method of using technology to bring people and ideas“together” despite of the geographical barriers. The technology has been available for years but

    the acceptance it was quit recent. Our project is an example of a chat server. It is made up of 2

    applications the client application, which runs on the user’s Pc and server application, which

    runs on any Pc on the network. To start chatting client should get connected to server where

    they can practice two kinds of chatting, public one (message is broadcasted to all connected

    users) and private one (between any 2 users only) and during the last one security measures

    were taken.

  • 8/20/2019 client server project report

    6/39

    SYSTEM N LYSIS

    2.1 System Objectives

    Communication over a network is one field where this tool finds wide ranging application.

    Chat application establishes a connection between 2 or more systems connected over an intra-

    net or ad-hoc. This tool can be used for large scale communication and conferencing in an

    organization or campus of vast size, thus increasing the standard of co-operation. In addition it

    converts the complex concept of sockets to a user friendly environment. This software can have

    further potentials, such as file transfer and voice chatting options that can be worked upon later.

    2.2 Relation to External Environment

    This tool helps in two major aspects -

     Resolving the names of all the system connected in a network and enlisting them.

     Used for communication between multiple systems enlisted in the resolved list.

    2.3 Design Considerations

    Approach:

    The tool has been designed using C# (Windows Form Application).

    Methodology:

    The user interacts with the tool using a GUI.

     The GUI operates in two forms, the List form & the chat form.

     The List form contains the names of all the systems connected to a network.

      The chat form makes the actual communication possible in the form of text.

  • 8/20/2019 client server project report

    7/39

    2.4 System Architecture

    The chat application works in two forms.

     

    List form:In this form, all the names of the systems connected to a network are enlisted. These

    names can later be used for communication with the help of mouse event, or in simple

    language: a click or a double click.

     Chat form

    This form is called only when an element is selected from the List form. In this form, a

    connection is created between the host system and the selected system with the help of a

    socket.

    Flow Chart

    No No

    START

    List Form

    (List of names of systems

    Is name

    selecte

     

    List

    Form

  • 8/20/2019 client server project report

    8/39

     

    Yes Yes

    Yes No

    Establish connection between

    Chat form

    (Text messages sent and received as packets

    Form

    closed

    Stop

  • 8/20/2019 client server project report

    9/39

     

    2.5 Operational Concepts and Scenarios

    Operation of the application based on the inputs given by the user:

    List Form:

      When initialized, returns a list containing the names of all the system connected in a

    network.

      Contains two buttons: Refresh and Connect.

      When Refresh button is clicked refreshes the list of names.

      When the Connect button is clicked or a name is double clicked, the chat form is

    initialized with a connection between the host and the client machine.

     

    Note: If no name is selected, and connect button is clicked an error box is displayed.

    Chat form:

      Contains a rich textbox which cannot be edited but only displays the messages from one

    user to another, including the self sent message, as in any chat application.

      Contains a textbox for messages to be written that is sent across the network.

      Contains a Send button.

      When the sent button is clicked, in the background, the text in the textbox is encoded

    and sent as a packet over the network to the client machine. Here this message is

    decoded and is shown in the rich textbox.  To make it more realistic, the self sent message is shown in the rich textbox as well. Both

    the messages is differentiated by the help of the identifier name at the beginning of each

    message in the rich text box.

    EXIT:

    The user exits the software in two scenarios:

      Exits the chat form, the list form remains intact.

    Exits the list form, this is when the application is closed.

  • 8/20/2019 client server project report

    10/39

    SYSTEM SPECIFIC TION

     

    3.1 Hardware requirements 

    In hardware requirement we require all those components which will provide us the platformfor the development of the project. The minimum hardware required for the development of

    this project is as follows— 

    Ram- minimum 128 MB

    Hard disk—minimum 5 GB

    Processor- Pentium 3

    Floppy drive 1.44” inch 

    CD drive 

    These all are the minimum hardware requirement required for our project. We want to make

    our project to be used in any. Type of computer therefore we have taken minimum

    configuration to a large extent.128 MB ram is used so that we can execute our project in a least

    possible RAM.5 GB hard disk is used because project takes less space to be executed or stored.

    Therefore minimum hard disk is used. Others enhancements are according to the needs.

    3.2 Software requirements

    Software’s can be defined as programs which run on our computer .it act as petrol in the vehicle.

    It provides the relationship between the human and a computer. It is very important to run

    software to function the computer. Various software’s are needed in   this project for its

    development.

    Which are as follows—?

    Operating system—Windows 7

    Others—Visual Studio 

    We will be using visual basic as our front hand because it is easier to use and provides features to

    the users which is used for the development of the project.

  • 8/20/2019 client server project report

    11/39

  • 8/20/2019 client server project report

    12/39

    4.1.3  Using UDP Sockets

    In order to use a UDP socket for network programming one has to follow the following steps as

    shown in figure given below:

    End point is a combination of IP address and port number . Endpoint objects allow you to easily

    establish and communicate over TCP/IP network connections between client and server processes,

    possibly residing on different hosts. The Endpoint class follows a telephone-like model of networking:

    clients "call" servers and servers "answer" clients. Once a network connection is established between a

    client and a server, the two can "talk" to each other by reading from and writing to the connection.

    4.2 Software Process Model

    The Software Process Model used is the Spiral Model. The choice for this model is in the light of the

    enhancements that we foresee for the future. The enhancements would be in the area of Networks being

    introduced into the software.

    4.3 Process Modules

    The functionalities and responsibilities of the system were partitioned and then assigned

    Create a UDPsocket

  • 8/20/2019 client server project report

    13/39

  • 8/20/2019 client server project report

    14/39

     

  • 8/20/2019 client server project report

    15/39

     

    Chapter 5

    System Design Detail

    5.1 GUI Module Name and Description

    This module deals with the application’s interface with the end user. All the user inputs (refreshing,

    connecting, chatting) are captured here.

    5.1.1 Design Alternatives

      Structured programming approach is used as the tool has been developed in Win64

    platform.

    5.1.2 Design Details

    At a minimum, the following should be described -

    a) Processing within module

  • 8/20/2019 client server project report

    16/39

    We develop the user interface for the application through which the user interacts with the tool. It

    consists of a main window and boxes which are displayed as per the menu selections made by the

    user. There are different controls such as edit controls, buttons etc which are used to get the user

    inputs.

    b)  Error checking

    Errors occurring because of connection problems. Errors occurring due to incorrect input by the

    user.

    5.2 Resolving Names Module Name and Description

    In this module the application resolves the names of the systems connected to a network. These names

    are displayed in the form of a list.

    5.2.1 Design Alternatives

      Structured programming approach is used as the tool has been developed in Win64 platform.

      Object oriented approach is an alternative to this.

    5.2.2 Design Details

    At a minimum, the following should be described

  • 8/20/2019 client server project report

    17/39

    a) Processing within modules

    We provide two buttons: Refresh and Connect to the user, to provide input on the basis of

    selection using mouse event. This module consists of the following two sub-modules

     REFRESH:

    This refreshes the list of names indicating to the respective systems connected in the network.

     CONNECT:

    This connects the host system to the selected system (if any) and opens the next form with this

    connection. If no system is selected, then an error message is shown, which tells a user to select a

    system first.

    b) Error checking

    Errors occurring during file saving operations.

    5.2.3 Assumptions

      All IP addresses fall in the same range.

      Firewall is turned off for intranet.

    5.3 Connection Modules Names and Description

    In this module the user communicates with the desired user in the form of text. A connection is formed

    between the host system and the desired user with the help of sockets which itself uses ports for packet

    data transfer.

  • 8/20/2019 client server project report

    18/39

  • 8/20/2019 client server project report

    19/39

    b) Error checking

    Errors occurring during file opening operations

    5.3.3 Assumptions

      All IP addresses fall in the same range.

      Firewall is turned off for intranet.

    Testing

    Glen Myers states a number of rules that can serve well as testing objectives. Testing is a process of

    executing a program with the intent of finding an error. We can test our project MNM Chat using variousmethods but the main objective is that when:-

    1. 

    The first form displays all the systems connected to a network correctly.

    2. 

    A successful connection is created and communication is possible via text synchronously.

    6.1 TESTING OBJECTIVES:

    Unit testing is the testing of the individual components (units) of the software. Unit testing is

    conducted as part of a combined code and unit test phase of the software lifecycle, although it is not

    uncommon for coding and unit testing to be conducted as two distinct phases.

    When developing a strategy for unit testing, there are three basic organizational approaches that can

    be taken. These are top down, bottom up and isolation. In our case of MNM Chat we simply use top

    down approach. There are two sub options in our project first one is Form1 mode, which is the listing

    part and second one is Form2 mode which is chat box. In the first case we just test for the correct

    resolution of names of systems connected to a network. And in the second mode our motive is to obtain

    a two way communication between the host user and remote user. And we are very much successful

    here in our test case.

  • 8/20/2019 client server project report

    20/39

  • 8/20/2019 client server project report

    21/39

    The test strategies will include five different types of testing as describes below:-

    1. Logical Testing: This will be used to test every aspect of both modes, report and query as soon as it is

    implemented, using valid, invalid and extreme data test data will be added to test each code module and

    results compared with the expected results. Sufficient data will be added to ensure that there is at least

    one entry in each category.

    Subsequent tests will often involved adding new data, which will be deleted when the test works

    satisfactorily.

    As per our requirement we have also included some field such as character size etc and then queries

    were performed after that results were tabulated and then the module were free from extra field.

    2. Functional Testing: - In this menu items were tested to ensure no functions has been missed out. This

    is done for the smooth working of the project.

    3. System Testing: - This is done after the completion of system; all the queries were carried out again to

    ensure that no errors have been introduced.

  • 8/20/2019 client server project report

    22/39

     

    Chapter 7

    System Implementation And Maintenance 

    7.1 Implementation

  • 8/20/2019 client server project report

    23/39

     

    Implementation is a vital step in ensuring the success of new system even a well designed system can fail

    if it is not a properly implemented. Implementation activities are needed to transform a newly developed

    information system into an operational system for end users.

    7.1.1 Acquiring Hardware Software And Services:

    These resources acquired from many sources in the computer industry. Some sources are as follows

    a-hardware- IBM, HP, Apple computer etc.

    b- software- Microsoft, Oracle etc.

    7.1.2 Testing: 

    Testing of a developed system is an important implementation activity. System testing and debugging

    computer programs and testing information processing procedures.

    7.1.3 Training methods:

    A-Vendor and in service training-Vendor offers extensive educational programs as part of their services

    .the courses by experiences trainers and sales personnel ,cover all aspects of using the equipment

    .participant actually use the system in the presence of trainer. It questions arise, they can quickly be

    answered.

    B- In house training- It is offered by special purchased instructional materials training manuals on site.

  • 8/20/2019 client server project report

    24/39

  • 8/20/2019 client server project report

    25/39

     

    Chapter 8

    Contribution In The Project

    A project is successfully completed only when there is contribution of all the members of a team. Each

    member in the project has a required objective to accomplish .In same way to complete this project we

    divided our work in equal manner .Instead of selecting a particular task to do individually, we divided a

    single task in multiple subtasks so that we all can work together on the same phase or task of the project.

    Doing so no team member had to wait to show his or her capabilities.

  • 8/20/2019 client server project report

    26/39

     

    Chapter9

    Limitation And Future Enhancement Conclusion

    9.1 Limitations

    There are mainly two limitations of the project and that are:

  • 8/20/2019 client server project report

    27/39

      The firewall is to be disabled for intra network.

      It is dependent on the specific algorithm used.

    9.2 Future Enhancement Conclusion

    There is always a room for improvements in any software package, however good and efficient it may be

    done. But the most important thing should be flexible to accept further modification. Right now we are

     just dealing with text communication. In future this software may be extended to include features such

    as:

      File transfer: this will enable the user to send files of different formats to others via the chat

    application.

      Voice chat: this will enhance the application to a higher level where communication will be

    possible via voice calling as in telephone.

      Video chat: this will further enhance the feature of calling into video communication.

  • 8/20/2019 client server project report

    28/39

    APPENDIX [A]

    Source Code 

    Form1.cs

    //Code for the first form that enlists the names:

    //library classes

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    using System.Diagnostics;

    using System.Net;

    using System.Net.Sockets;

    using System.IO;

    namespace Chat_App

    {

    public partial class Form1 : Form

    {

    Form2 frm1; //object for next form

  • 8/20/2019 client server project report

    29/39

      int portNo = 1; //ports to be used

    public Form1()

    {

    InitializeComponent();

    }

    //code for resolving names on initialization

    private void Form1_Load(object sender, EventArgs e)

    {

    Process netUtility = new Process();

    netUtility.StartInfo.FileName = "net.exe";

    netUtility.StartInfo.CreateNoWindow = true;

    netUtility.StartInfo.Arguments = "view";

    netUtility.StartInfo.RedirectStandardOutput = true;

    netUtility.StartInfo.UseShellExecute = false;

    netUtility.StartInfo.RedirectStandardError = true;

    netUtility.Start();

    StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream,

    netUtility.StandardOutput.CurrentEncoding);

    string line = "";

    while ((line = streamReader.ReadLine()) != null)

    {

    if (line.StartsWith("\\"))

    {

    lbNames.Items.Add(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper());

  • 8/20/2019 client server project report

    30/39

      }

    }

    /* if (lbNames.ItemHeight == 0)

    {wwww

    lbNames.Items.Add("No systems connected..\nPleace check LAN");

    }*/

    streamReader.Close();

    netUtility.WaitForExit(1000);

    this.lbNames.MouseDoubleClick += new MouseEventHandler(lbNames_MouseDoubleClick);

    }

    private void lbNames_SelectedIndexChanged(object sender, EventArgs e)

    {

    }

    //refresh button

    private void button1_Click(object sender, EventArgs e)

    {

    lbNames.Items.Clear();

    Process netUtility = new Process();

    netUtility.StartInfo.FileName = "net.exe";

    netUtility.StartInfo.CreateNoWindow = true;

    netUtility.StartInfo.Arguments = "view";

    netUtility.StartInfo.RedirectStandardOutput = true;

    netUtility.StartInfo.UseShellExecute = false;

  • 8/20/2019 client server project report

    31/39

      netUtility.StartInfo.RedirectStandardError = true;

    netUtility.Start();

    StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream,

    netUtility.StandardOutput.CurrentEncoding);

    string line = "";

    while ((line = streamReader.ReadLine()) != null)

    {

    if (line.StartsWith("\\"))

    {

    lbNames.Items.Add(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper());

    }

    }

    /*if (lbNames.ItemHeight == 0)

    {

    * lbNames.Items.Add("No systems connected..\nPleace check LAN");

    }*/

    streamReader.Close();

    netUtility.WaitForExit(1000);

    }

    //connect button

    private void button2_Click(object sender, EventArgs e)

    {

    if (lbNames.SelectedItem == null) //error message box

    {

    Form3 frm = new Form3();

  • 8/20/2019 client server project report

    32/39

  • 8/20/2019 client server project report

    33/39

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    using System.Net;

    using System.Net.Sockets;

    using System.IO;

    using System.Threading;

    namespace Chat_App

    {

    public partial class Form2 : Form

    {

    Thread thdUDPServer;

    int portNo;

    string serverName;

    public Form2(int port, string name)

    {

    portNo = port;

    serverName = name;

    InitializeComponent();

    }

  • 8/20/2019 client server project report

    34/39

    //thread for synchronous data transfer

    public void serverThread()

    {

    UdpClient udpClient = new UdpClient(portNo);

    while (true)

    {

    IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, portNo);

    Byte[] recieveBytes = udpClient.Receive(ref RemoteIpEndPoint); //receiving data

    string returnData = Encoding.ASCII.GetString(recieveBytes);

    lbConnections.AppendText(serverName + ":" + returnData.ToString() + "\n");

    }

    }

    private void Form2_Load(object sender, EventArgs e)

    {

    chatBox.Focus();

    thdUDPServer = new Thread(new ThreadStart(serverThread)); //thread object for sockets

    thdUDPServer.Start();

    }

    private void lbConnections_TextChanged(object sender, EventArgs e)

    {

    }

    private void chatBox_TextChanged(object sender, EventArgs e)

  • 8/20/2019 client server project report

    35/39

      {

    }

    private void button1_Click(object sender, EventArgs e)

    {

    UdpClient udpClient1 = new UdpClient(); //socket object for data transfer using UDP protocol

    udpClient1.Connect(serverName, portNo);

    Byte[] sendBytes = Encoding.ASCII.GetBytes(chatBox.Text); //encoding

    if (chatBox.TextLength != 0)

    {

    string hostName = Dns.GetHostName().ToString();

    udpClient1.Send(sendBytes, sendBytes.Length); //sending to remote user

    lbConnections.AppendText(hostName + ":" + chatBox.Text + "\n");

    lbConnections.ScrollToCaret();

    }

    chatBox.Clear();

    chatBox.Focus();

    }

    private void copyToolStripMenuItem_Click(object sender, EventArgs e)

    {

    Clipboard.Clear();

    chatBox.Copy();

    }

  • 8/20/2019 client server project report

    36/39

    //cut, copy, paste commands

    private void copyToolStripMenuItem1_Click(object sender, EventArgs e)

    {

    Clipboard.Clear();

    lbConnections.Copy();

    }

    private void cutToolStripMenuItem_Click(object sender, EventArgs e)

    {

    Clipboard.Clear();

    chatBox.Cut();

    }

    private void pasteToolStripMenuItem_Click(object sender, EventArgs e)

    {

    chatBox.AppendText(Clipboard.GetText());

    }

    }

    }

    Form3.cs

    //code for error message

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

  • 8/20/2019 client server project report

    37/39

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    namespace Chat_App

    {

    public partial class Form3 : Form

    {

    public Form3()

    {

    InitializeComponent();

    }

    private void label1_Click(object sender, EventArgs e)

    {

    }

    private void button1_Click(object sender, EventArgs e)

    {

    Form3.ActiveForm.Close();

    }

    }

    }

  • 8/20/2019 client server project report

    38/39

     

    APPENDIX [B]

    Output

    One of the most important principles of Software Design is to keep the software simple yet effective. This

    has been the guiding force during the design phase of our software. And the Interface that we provide is

    no exception. Against the backdrop of this ideology we design a simple yet very effective interface.

    Ad-Hoc

  • 8/20/2019 client server project report

    39/39