IT 328 Project: Socket Programming
IT 328 Project: Socket Programming
IT 328 Project
Socket Programming
Weighting of this coursework towards the Module 10%
mark (%):
Outline of The common language of the Internet is IP. Programmers who create
Problem networked applications typically interface with IP via either the User Datagram
Protocol (UDP) or the Transmission Control Protocol (TCP). Sockets offers an
Application Programming Interface to both UDP and TCP. In this assignment you
are to investigate the Sockets interface and produce a small networked
application as outlined below.
Problem Instant messaging (IM) is a staple of the web and has been around almost since
its inception, starting with simple text-based programs like talk and IRC and
progressing to today's GUI-based IM clients from Yahoo, Microsoft, AOL, etc. In
this project you will design and implement an IM system, including both the client
and the server. The following characteristics constrain the design space of an IM
system:
Real-time communication. An IM conversation happens in real time:
one person types some text, presses "enter," and the other person
(almost) immediately sees the text.
Number of parties. An IM conversation can happen between two or
more people. Some systems only allow two people to communicate;
others allow more than two people. Most systems allow a person to be
involved in multiple conversations at the same time.
Based on typed text. The main mode of communication is via text, as
opposed to voice or video.
Connected over a network. The parties involved in the communication
may be in physically remote locations, and are connected over the
internet.
Your task will be to design an instant messaging system with the above
properties, as well as additional properties that you will incorporate into your
design. This system will include a server component that handles the transfer of
messages and other data, and a client component with a graphical user interface.
Purpose The purpose of this project is twofold.
First, you will learn several Java technologies, including networking (to
support connectivity over a network), sockets and I/O (to support real-
time, text-based communication), and threads (to support two or more
people communicating concurrently). State machines may be useful to
specify certain aspects of the system's behavior.
Second, this project will introduce you to the state-of-the-art for enabling
human-computer interaction: graphical user interfaces. You will:
o become familiar with Swing, a graphical user interface (GUI) toolkit
for Java, that is similar to many other such toolkits;
o learn important GUI programming concepts, including the notion of
a view hierarchy and the model-view-controller design pattern;
o use event-based programming and the publish-subscribe pattern;
o use object modeling notation to explore and express these
structures;
o And confront user interface design challenges.
Throughout the project, you will need to design and implement mutable
datatypes, paying particular attention to their specifications and how they interact
with one another.
Specification Implement an IM system in Java with the following properties:
Client. The client is a program that opens a network connection with the
IM server at a specified IP address and port number. Once the connection
is open, the client program presents a graphical user interface for
performing the interactions listed below.
Server. The server is a program that accepts connections from clients. A
server should be able to maintain an unlimited number of open client
connections, and clients should be able to connect and disconnect as they
please.
The server is responsible for managing the state of both clients
and conversations.
Conversations. A conversation is an interactive text-exchange session
between some number of clients and is the ultimate purpose of the IM
system. The exact nature of a conversation is not specified, except to say
that it allows clients to send text messages to each other. Messaging in a