Java Network Programming
Network Programming
Spring 2000
Jeffrey E. Care
carej@[Link]
Java Overview
Object-oriented
Developed with the network in
mind
Built-in exception handling
Extensive standard class library
Netprog 2000 - Java Network Programming 2
Important Java Packages
[Link] TCP/IP networking
[Link] I/O streams & utilities
[Link] Remote Method Invocation
[Link] Security policies
[Link] Threading classes
Netprog 2000 - Java Network Programming 3
Java Sockets Programming
Java uses BSD-style sockets to
interface with TCP/IP services (
[Link] package)
Java distinguishes between UDP, TCP
server & TCP client sockets
Behind-the-scenes classes do the
actual work & can be updated or
swapped out transparently
Netprog 2000 - Java Network Programming 4
IP Addresses & Hostnames
[Link] class
Represents a single IP address
Factory class – no public constructor
Performs transparent DNS lookups or
reverse lookups
[Link]
thrown if DNS system can’t find IP
address for specific host
Netprog 2000 - Java Network Programming 5
TCP Server Sockets
[Link] class
Binds to a local port to listen for initial
connections
Can be bound to a local IP for multi-
homed machines
accept() method returns a
[Link], not an integer
descriptor
Netprog 2000 - Java Network Programming 6
TCP Client Sockets
[Link] class
Combines socket with socket options
(timeout, linger, keep alive, no delay,
etc)
Encapsulates a [Link]
and a [Link] – can be
retrieved for use in a layered I/O system
Netprog 2000 - Java Network Programming 7
UDP Sockets
[Link] class
Java makes no distinction between
client/server for UDP sockets
Connected mode UDP supported in
Java 2
Can be bound to both a local port & a
local IP address – multi-homed support
Supports some socket options (timeout,
buffer size)
Netprog 2000 - Java Network Programming 8
UDP Datagrams
[Link] class
Expects a byte array of data
Address optional for connected-mode
UDP
This class is final – can’t be extended!
[Link]
instances can only send instances of
[Link]
Netprog 2000 - Java Network Programming 9
Threading
Java doesn’t support the notion of
forking processes; how do we support
concurrency?
– Java was designed to support multi-
threading!
– In server environments we can spawn new
threads to handle each client
– Thread groups allow for collective control
of many threads
Netprog 2000 - Java Network Programming 10
Java Servlets
Servlets are the Java analog to CGI
Advantages of servlets: full access to
other Java APIs, persistence between
invocations, guaranteed portability
Servlets can be generic services or
specific to HTTP
Netprog 2000 - Java Network Programming 11
HTTP Servlets
[Link]
class
Uses HTTP to receive requests and
generate responses
Full support for all HTTP methods,
cookies, sessions, persistent
connections
Servlets can be chained – example: de-
blink servlet
Netprog 2000 - Java Network Programming 12
Java Applets
Client-side Java programs that run in a
browser
Applets have special security
restrictions called the applet sandbox
Only applets loaded over the network
are subject to the applet sandbox
The applet sandbox is controlled by a
[Link]
Netprog 2000 - Java Network Programming 13
Applet Sandbox
Can’t load libraries or define native methods
Can’t access local host filesystem
Can’t open sockets to hosts other than
originating host
Can’t use [Link]()
Applet windows have a unique appearance
Restricted access to certain system
properties
Netprog 2000 - Java Network Programming 14
Escaping the Applet Sandbox
Browsers can define their own security
policy via a new security manager
Applets can be signed and executed as
trusted content
Security policies may vary from browser
to browser, even for signed applets
Netprog 2000 - Java Network Programming 15
Remote Method Invocation
(RMI)
RMI is the Java analog to RPC
RMI servers use a naming service
(rmiregistry) to register remote objects
RMI servers use a special security policy
implemented by RMISecurityManager
The default RMI transport mechanism is via
TCP sockets – this is transparent to RMI
code!
Any object transferred in an RMI call must
implement the Serializable interface
Netprog 2000 - Java Network Programming 16
Java Naming & Directory
Interface (JNDI)
JNDI provides a generic API that can be used
to interface with any naming system
JNDI uses SPIs (service provider interfaces)
to access many different types of naming &
directory services from the JNDI API
Sun supplies JNDI SPIs for LDAP, NIS, COS
(CORBA naming), RMI registry & local
filesystem
Netprog 2000 - Java Network Programming 17