Networking with Java - University of Arizona

Download Report

Transcript Networking with Java - University of Arizona

Networking with Java
CSc 335
Object-Oriented Programming and Design
Spring 2009
Acknowledgements
• These slides were written by Craig Barber.
• Some slides from Martin Stepp were used.
• The slides were modified slightly by Richard
Snodgrass and reorganized by Ivan Vazquez.
Networking with Java
N-2
Networking
Type Resolution
Type Checking
Compile-Time
Run-Time
Java API
Java Language
I/O
Abstract
Classes
Packages
Serialization
Networks
Concurrency
Frameworks
Collection
Anonymous
Classes
Exceptions
Java Swing
JDK/JRE
Listeners
Events
Inversion
of Control
Template
MVC
Iterator
Command
Debugging
JUnit
Testing &
Maintaing
Large
Programs
Eclipse
Javadoc
Teams
PITL
Layout
Manager
Observer
Observable
Decorator
Composite
Design
Patterns
Coupling/
Cohesion
OO Design
Reading
others’
code
Refactoring
Refactoring
Inheritance
Hierarchy
UML
Class
Diagrams
Sequence
Diagrams
Package
Diagrams
N-3
Y-3
Outline
• Introduction to Networking Concepts



Client-Server and Peer-to-Peer
Sockets
Streams
• Networking in Java
• Summary
Networking with Java
N-4
What is “Networking”
•
What is “Networking”?


•
Basic: getting two or more computers to send data to each
other
Practical: having programs on separate computers interact
with one another
Types of Networking

Client - Server



Many clients connect with one server.
Clients communicate only with server.
Peer-to-Peer


Networking with Java
Clients connect to a group of other clients, with no server.
Clients communicating directly with each-other.
N-5
Client - Server Networking
• Advantages:



Easier to implement
Less coordination
involved
Easier to maintain
control of users
• Disadvantage:

Relies on one main
server for entire
operation
Networking with Java
N-6
Peer-to-Peer Networking
• Advantages:



No main server
Easier for clients to enter and
leave
Easier for spreading updates
• Disadvantages:



Less control over users
Harder to coordinate
More difficult to implement
code
Quick Time™ a nd a TIFF ( Un compr ess ed ) de co mp res sor ar e ne ed ed to s ee this pic tur e.
Networking with Java
N-7
How Does Networking Work?
• Computers connect to each other through links called
sockets, each associated with a single computer.
• A network stream is created by connecting a socket on
one computer to a socket on another computer.
• Applications communicate by sending data through
streams to each other.
• Note: streams are also used in Java for input and
output.
Networking with Java
N-8
Sockets
• A socket is a connection on one computer used to send
data back and forth
• The application consists of multiple processes, one
running on each computer.
• Sockets are created by the process on each computer.
• The sockets then establish a connection to each other.


One process sets up a server socket to receive a connection.
The other process sets up a client socket to establish the
connection with the server socket.
Networking with Java
N-9
Outline
• Introduction to Networking Concepts
• Networking in Java



Sockets
Streams
Decorating Streams
• Summary
Networking with Java
N-10
Sockets in Java
• Found in java.net package
• java.net.ServerSocket


Accepts new incoming connections
Creates new ServerSocket for each connection
• java.net.Socket

Connects to an existing ServerSocket, through the network
Networking with Java
N-11
Sockets in Java
Host Machine
Host Machine
Process
Process
Server
Socket
Socket
Socket
Output
Socket
Input
Socket
Socket
Input
Socket
Host Machine
Process
Socket
Networking with Java
N-12
java.net.ServerSocket
• public ServerSocket( int port )


Throws IOException
Creates a ServerSocket to accept new connections at the specified
port
• public Socket accept( )



Throws IOException
Waits for an incoming connection, establishes the new connection, and
returns a socket for that connection
Multiple applications can connect to the same ServerSocket
• public void close( )



Throws IOException
Closes the server socket.
Does not close open sockets.
Networking with Java
N-13
java.net.Socket
• public Socket( String host, int port )


Throws IOException, UnknownHostException
Connects to a server socket at the provided address (host) on the provided
port
• public InputStream getInputStream( )

Throws IOException

Returns the input stream from the socket
• public OutputStream getOutputStream( )

Throws IOException

Returns the output stream from the socket
• public void close( )

Throws IOException

Closes the connection
Networking with Java
N-14
Summary
• Networking is actually doable, when using Java’s
convenient API.
• Networking is integrated with input and output: both
use streams.
• Decorators make your life much easier.
• Advanced applications often use serialization and
threads.
Networking with Java
N-15