Вы находитесь на странице: 1из 39

A Project Report

on

Chat Application

Submitted By:
Kumar Gaurav (MRT09UGBCS013)

Faculty of Electronics, Informatics & Computer Engineering


2012-13

CERTIFICATE
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.

ACKNOWLEDGEMENT

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

Table of contents
Sr. No

Topic

Page Number

Introduction

05

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

System Specification

14

3.1 H/W Specification

14

3.2 S/W Specification

15

Organization Profile

16

Specification of Language

17

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

Coding

37

Testing

40

Security

42

10

Screen Shots

43

11

Future Enhancement

49

12

Conclusion

50

13

Bibliography

51

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 users 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.

SYSTEM ANALYSIS
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 intranet 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.

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
START

List Form
(List of names of systems

No

Is name
selecte
d

No

List
Form
Close?

Yes

Yes

Establish connection between


Stop
host and selected system

Chat form
(Text messages sent and received as packets

Yes

Form
closed

No

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.

SYSTEM SPECIFICATION
3.1 Hardware requirements
In hardware requirement we require all those components which will provide us the platform
for the development of the project. The minimum hardware required for the development of
this project is as follows
Ram- minimum 128 MB
Hard diskminimum 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


Softwares 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 softwares are needed in this project for its
development.
Which are as follows?
Operating systemWindows 7
OthersVisual 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.

SOFTWARE ARCHITECTURE
4.1.1 Socket Overview
A socket is an object that represents a low level access point to the IP stack. This socket can be
opened or closed or one of a set number of intermediate states. A socket can send and receive
data down disconnection. Data is generally sent in blocks of few kilobytes at a time for
efficiency; each of these block are called a packet.
All packets that travel on the internet must use the Internet Protocol. This means that the
source IP address, destination address must be included in the packet. Most packets also contain
a port number. A port is simply a number between 1 and 65,535 that is used to differentiate
higher protocols. Ports are important when it comes to programming your own network
applications because no two applications can use the same port.
Packets that contain port numbers come in two flavors: UDP and TCP/IP. UDP has lower latency
than TCP/IP, especially on startup. Where data integrity is not of the utmost concerned, UDP can
prove easier to use than TCP, but it should never be used where data integrity is more important
than performance; however, data sent by UDP can sometimes arrive in the wrong order and be
effectively useless to the receiver. TCP/IP is more complex than UDP and has generally longer
latencies, but it does guarantee that data does not become corrupted when travelling over the
internet. TCP is ideal for file transfer, where a corrupt file is more unacceptable than a slow
download; however, it is unsuited to internet radio, where the odd sound out of place is more
acceptable than long gaps of silence.

4.1.2 UDP Ports


The User Datagram Protocol is an unreliable, connectionless oriented protocol that uses an IP
address for the destination host and a port number to identify the destination application.
The UDP port number is distinct from any physical port on a computer such as a COM port or an
I/O port address. The UDP port is a 16-bit address that exists only for the purpose of passing
certain types of datagram information to the correct location above the transport layer of the
protocol stack.
A UDP datagram header consists of four (4) fields of two bytes each:
1.
2.
3.
4.

source port number


destination port number
datagram size
checksum

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:

Create a UDP
socket

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

to subsystems or components as described below.

4.3.1 Graphical User Interface

The user interface that the software provides to the user is interactive. It provides two different forms,
one for list of systems and the other for the actual text chatting.

4.3.2 Resolving Names

This module handles the code that is necessary to view the different aspewcts of the network
connections in a system. It uses net.exe to resolve the names of the system connected to a network to
which the host system is also connected. It then enlists these names into the first form of the application.

4.3.3 Connection

This module deals with the establishment of a connection between the host system and the system
selected from the list. The connection is made by the help of sockets that uses ports to send and receive
packets from one system to another. The message sent or received is coded and is encoded or decode
respectively.

4.4 Conclusion

This chapter has given a broad picture of the design of the software in terms of the different modules
used. It also gives us an idea about the degree to which each module performs related tasks. We also get
an idea about the interdependence among the modules.

Chapter 5
System Design Detail
5.1 GUI Module Name and Description
This module deals with the applications 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


platform.

5.1.2 Design Details

At a minimum, the following should be described -

a) Processing within module

Win64

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

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.

5.3.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.3.2 Design Details

At a minimum, the following should be described

a) Processing within modules


We show a windows form application that makes communication graphic oriented and user friendly.
Three GUI interfaces are captured under this:

TEXTBOX :
Here the user enters the message to be sent to the remote user.

RICH TEXTBOX:
In this module the message sent is pasted under host name and the message received
displayed under the remote users name.

SEND BUTTON:
When this button is pressed, the message in the textbox is displayed in the rich
textbox under the hosts name and also it is sent over the network to the remote
machine where it is displayed in the textbox under the senders name.

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 various
methods 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.

6.2 Integration Testing:


After the unit testing we have to perform integration testing. The goal here is to see if modules can be
integrated properly, the emphasis being on testing interfaces between modules. After the modules are
connected we have perform the total testing.

6.3 SYSTEM TESTING:

System testing is the process of executing software in a controlled manner, in order to answer the
questions "Does the software behave as specified?"
System testing is often used in association with the terms verification and validation .Verification is the
checking of items, including software, for conformance and consistency with an associated specification.
Software testing is just one kind of verification, which also uses techniques such as reviews, analysis,
inspections and walkthroughs. Validation is the process of checking that what has been specified is what
the user actually wanted.

Validation: Are we doing the right job?

Verification: Are we doing the job right?

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.

Chapter 7

System Implementation And Maintenance

7.1 Implementation

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.

7.1.4 System documentation:

Installing and operating a newly designed system or modifying an established application requires a
detailed record of that systems design. Documentation is important in diagnosing errors and making
channel .documentation serves as a method of communication among the people responsible for
developing implementing and maintaining a system.

7.2 Maintenance

Once a system is fully implemented & being operated by end user & the maintenance function begins
.System maintenance is the monitoring to evaluating &modifying of operational information system to
make desirable or necessary improvements .for example the implementation of a new system usually
results in the phenomenon known as the leaning curve .person who operates &use the system will make
mistakes simply because the are not familiar with it .Though such errors usually diminished experience is
gained with a new system ,they do point out areas where system may be improved . Maintenance is also
necessary for the failures and problems that arise during the operation of a system .the maintenance
activity includes a post implementation of a system review process to ensure that newly implemented
system meet the system development objective established for them . Errors in the development of a
system must be corrected by the maintenance process .this includes a periodic review or audit of a
system to ensure on operating system &meeting its objective.

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.

Chapter9

Limitation And Future Enhancement Conclusion

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

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.

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

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
=
netUtility.StandardOutput.CurrentEncoding);

new

StreamReader(netUtility.StandardOutput.BaseStream,

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)
{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;

netUtility.StartInfo.RedirectStandardError = true;
netUtility.Start();
StreamReader
streamReader
=
netUtility.StandardOutput.CurrentEncoding);

new

StreamReader(netUtility.StandardOutput.BaseStream,

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();

frm.Show();
}
else
{
frm1 = new Form2(portNo, lbNames.SelectedItem.ToString());
frm1.Show();
portNo++;
}
}
void lbNames_MouseDoubleClick(object sender, MouseEventArgs e)
{
int index = this.lbNames.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
frm1 = new Form2(portNo, lbNames.SelectedItem.ToString());
frm1.Show();
portNo++;
}
}
}
}
Form 2.cs
//code for the second form which is the actual chatting part

//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.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();
}

//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)

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();

//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;

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();
}
}
}

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

Вам также может понравиться