0% found this document useful (0 votes)
94 views

Chapter 4 - Network Programming

The document discusses Java network programming. It covers Java networking concepts like streams, sockets, and connection-oriented vs connection-less protocols. It also describes key Java classes for network programming - Socket, ServerSocket, URL, InetAddress, DatagramSocket and DatagramPacket. Code examples are provided to demonstrate how to create basic client and server applications using sockets and datagrams.

Uploaded by

kassahun
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
94 views

Chapter 4 - Network Programming

The document discusses Java network programming. It covers Java networking concepts like streams, sockets, and connection-oriented vs connection-less protocols. It also describes key Java classes for network programming - Socket, ServerSocket, URL, InetAddress, DatagramSocket and DatagramPacket. Code examples are provided to demonstrate how to create basic client and server applications using sockets and datagrams.

Uploaded by

kassahun
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

Advanced Programming (CMIT 6113)

Chapter 4
Network Programming
• Introduction
• Java Networking
• Manipulating URLs
• Java Socket Programming
• InetAddress
• Datagram Sockets and
Datagram Packet
 Java provides:-
 Stream-based communications
 a process establishes a connection to another process. While the
connection is in place, data flows between the processes
 Connection-based protocol - Uses TCP
 Packet-based communications – use UDP
 Individual packets transmitted
 Client-server relationship
 Client requests some action to be performed
 Server performs the action and responds to client
 Request-response model
 Common implementation: Web browsers and Web servers

2
 Java Networking is a concept of connecting two or more computing devices

together so that we can share resources.

 Java Network programming provides facility to share data between different

computing devices.

Advantage of Java Networking


 sharing resources
 centralize software management
Java Networking terminology
 IP Address
 Protocol
 Port number
 MAC Address, connection-oriented and connection-less protocol

3
Table 1:Java networking classes and interfaces

4
• The HTTP protocol uses URIs to locate data on the Internet.
• A URI that represents a document is called a URL
• An object of the java.net.URL class represents a URL.
• The URL class
• Has constructors that constructs a URL object:
• By taking an absolute URL in string form
• By taking the URL’s component parts:- protocol, host name …
• By taking a base and relative URL
• constructors throw a MalformedURLException if
• The protocol is an unsupported protocol or
• The URL is syntactically incorrect.
• Has methods to
• Parse the different parts of a URL
• Gets an input stream from a URL, so you can read data from server
• Get content from a server as a java object.
Example
5
 The openStream( ) method
 connects to the resource referenced by the URL,
 and returns an InputStream from which data can be read.
 The data you get from this InputStream is the raw contents of the file the URL
references:
 The openConnection( ) method
 opens a socket to the specified URL

 and returns a URLConnection object.

 The URLConnection class


 represents an active connection to a resource specified by a URL.
 Its instance can be used both to read from and to write to the resource.
Example

6
 A socket, in network terminology, is an end-point for communication
between two processes on the network.
 Java Socket programming is used for communication between the

applications running on different JRE.

 Java Socket programming can be connection-oriented or connection-less.

 Socket and ServerSocket classes are used for connection-oriented socket

programming and DatagramSocket and DatagramPacket classes are used for


connection-less socket programming.

 The client in socket programming must know two information:

1. IP Address of Server, and


2. Port Number
7
 Represents IP address
 Performs name lookup and reverse lookup
 Has no public constructor
 has static methods that return InetAddress objects given a little information.
 InetAddress getByName(String hostName)
 hostName can be “java.sun.com”, or “130.95.72.134”
 these methods may make a connection to the local DNS server to fill out the
information in the InetAddress object
 InetAddress getLocalHost()
 Returns the localhost
 getByAddress (byte[] addr)
 returns an InetAddress object given the raw IP address
 getByAddress(String host, byte[] addr)
 Create an InetAddress based on the provided host name and IP address No name
service is checked for the validity of the address. Example
8
 A socket is a connection between two hosts.

 The Socket class allows you to create a socket that performs the following
operations:
 Connect to a remote machine

 Send data

 Receive data

 Close a connection

 It’s constructors
 specify the host and the port number you want to connect to.
 Hosts may be specified as an InetAddress or a String.

 Ports are always specified as int values from 0 to 65,535.

Socket s = new Socket(host, port);


 Two of the constructors also specify the local address and local port from which data
9 will be sent. Socket s = new Socket(host, port, lAddr, lPort); Example
 The constructors do not just create a socket object. They also attempts to connect

the underlying socket to the remote server.

 The getInputStream( ) method

 returns an input stream that can read data from the socket into a program.

 The getOutputStream() method

 returns a raw OutputStream for writing data from your application to the other

end of the socket.

10
 Listens on well-known port for incoming connections
 Creates a dynamically allocated port for each newly established connection
 Provides a Socket connected to the new port
 Maintains a queue to ensure that prospective clients are not lost
 Construction:
 ServerSocket(int port, int backlog)
 Allows up to backlog requests to queue waiting for the server to deal
with them
 Some useful methods:
 Socket accept()
 Blocks waiting for a client to attempt to establish a connection
 void close()
 Called by the server when it is shutting down to ensure that any
11 resources are deallocated
 Five steps to create a simple server in Java
Step 1: Create ServerSocket object
ServerSocket server = new ServerSocket( port, queueLen);
 Register an available port
 Specify a maximum number of clients
 Handshake point
 Binding the server to the port
Step 2: Server listens for client connection
Socket connection = server.accept();
 Server blocks until client connects
 accept( ) returns a Socket object that performs the actual
communication with the client.
Step 3: get the input and output streams that communicate with the
client.
 Use connection.getInputStream(); to get the input stream.
 Use connection.getOutputStream(); to get the output stream.
12
Step 4: Process phase
 Server and Client communicate via streams

Step 5: Close streams and connections


 Method close()

ExampleServer

13
Four steps to create a simple client in Java
Step 1: Create a Socket to connect to server
Socket connection = new Socket(serverAddress, port);
Step 2: Obtain Socket’s InputStream and Outputstream
Step 3: Process information communicated
Step 4: Close streams and connection
ExampleClient

14
 Connectionless transmission with datagrams
 No connection maintained with other computer
 Break message into separate pieces and send as packets
 Datagram packet
 used as short lived envelopes for datagram messages
 Used to assemble messages before they are dispatched onto the network,
 or dismantle messages after they have been received
 The DatagramPacket class
 represents a datagram packet.
 Has the following attributes:
 Destination/source address
 Destination/source port number
 Data bytes constituting the message
15  Length of message data bytes
 Java DatagramSocket and DatagramPacket classes are used for
connection-less socket programming.

 DatagramSocket class

 Java DatagramSocket class represents a connection-less socket for

sending and receiving datagram packets. A datagram is basically an


information but there is no guarantee of its content, arrival or arrival time.

 Commonly used Constructors of DatagramSocket class


o DatagramSocket() throws SocketException: it creates a datagram socket and binds it with the
available Port Number on the localhost machine.
o DatagramSocket(int port) throws SocketException: it creates a datagram socket and binds it
with the given Port Number.
o DatagramSocket(int port, InetAddress address) throws SocketException: it creates a
datagram socket and binds it with the specified port number and host address.

16
 Java DatagramPacket class

Java DatagramPacket is a message that can be sent or received. If you send


multiple packet, it may arrive in any order. Additionally, packet delivery is not
guaranteed.

Commonly used Constructors of DatagramPacket class

 DatagramPacket(byte[] buf, int length): it creates a datagram packet. This

constructor is used to receive the packets of lengh length.

 DatagramPacket(byte[] buf, int length, InetAddress address, int port):

it creates a datagram packet. This constructor is used to send the packets to


the specified port number on the specified host.

17
ExampleSender ExampleReceiver

You might also like