Java Network Programming
Network Programming
Spring 2000
Jeffrey E. Care
carej@ieee.org
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
java.net TCP/IP networking
java.io I/O streams & utilities
java.rmi Remote Method Invocation
java.security Security policies
java.lang Threading classes
Netprog 2000 - Java Network Programming 3
Java Sockets Programming
Java uses BSD-style sockets to
interface with TCP/IP services (
java.net 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
java.net.InetAddress class
Represents a single IP address
Factory class – no public constructor
Performs transparent DNS lookups or
reverse lookups
java.net.UnkownHostException
thrown if DNS system can’t find IP
address for specific host
Netprog 2000 - Java Network Programming 5
TCP Server Sockets
java.net.ServerSocket 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
java.net.Socket, not an integer
descriptor
Netprog 2000 - Java Network Programming 6
TCP Client Sockets
java.net.Socket class
Combines socket with socket options
(timeout, linger, keep alive, no delay,
etc)
Encapsulates a java.io.InputStream
and a java.io.OutputStream – can be
retrieved for use in a layered I/O system
Netprog 2000 - Java Network Programming 7
UDP Sockets
java.net.DatagramSocket 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
java.net.DatagramPacket class
Expects a byte array of data
Address optional for connected-mode
UDP
This class is final – can’t be extended!
java.net.DatagramSocket
instances can only send instances of
java.net.DatagramPacket
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
javax.servlet.http.HttpServlet
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
java.lang.SecurityManager
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 Runtime.exec()
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