Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

DEPARTMENT OF COMPUTER APPLICATIONS

I YEAR II SEM

19CAT608 – Java Programming

UNIT III – Networking and IO Packages


Topic 21: InetAddress
InetAddress in Java
 Java InetAddress class represents an IP address. The
java.net.InetAddress class provides methods to get the IP of any host name
explicitly created, used, released by apps

Method Description
public static InetAddress It returns the instance of
getByName(String host) throws InetAddress containing
UnknownHostException LocalHost IP and name.

public static InetAddress It returns the instance of


getLocalHost() throws InetAdddress containing local
UnknownHostException host name and address.

It returns the host name of the


public String getHostName()
IP address.
It returns the IP address in
public String getHostAddress()
string format.
2
InetAddress in Java
 Example:
 import java.io.*;
 import java.net.*;
 public class InetDemo{
 public static void main(String[] args){
 try{
 InetAddress ip=InetAddress.getByName("www.javatpoint.com");

 System.out.println("Host Name: "+ip.getHostName());
 System.out.println("IP Address: "+ip.getHostAddress());
 }catch(Exception e){System.out.println(e);}
 }
 }

3
Socket programming
Goal: learn how to build client/server application that communicate
using sockets

Socket API socket


 introduced in BSD4.1 UNIX, 1981
a host-local, application-
 explicitly created, used, released by created/owned,
apps OS-controlled interface (a
 client/server paradigm “door”) into which
 two types of transport service via application process can both send
socket API: and
receive messages to/from
 unreliable datagram
another (remote or
 reliable, byte stream-oriented
local) application process

2: Application Layer 4
Socket-programming using TCP
Socket: a door between application process and end-end-transport
protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one process to
another

controlled by
controlled by process application
application process
developer
developer socket
socket TCP with controlled by
controlled by TCP with
buffers, operating
operating buffers, internet system
system variables variables

host or host or
server server

2: Application Layer 5
Socket programming with TCP
Client must contact server  When client creates socket: client
 server process must first be TCP establishes connection to server
running TCP
 server must have created socket  When contacted by client, server
(door) that welcomes client’s TCP creates new socket for server
contact process to communicate with client
 allows server to talk with multiple
Client contacts server by:
clients
 creating client-local TCP socket
 specifying IP address, port number
of server process application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server

2: Application Layer 6
Socket programming with TCP

Example client-server app: Input stream: sequence of bytes into


 client reads line from standard input process
(inFromUser stream) , sends to Output stream: sequence of bytes
server via socket (outToServer out of process
stream)
 server reads line from socket
 server converts line to uppercase,
sends back to client
 client reads, prints modified line from
socket (inFromServer stream)

client socket

2: Application Layer 7
Client/server socket interaction: TCP
involves 3-way
Server (running on hostid) Client handshake
create socket, server client
port=x, for
incoming request:
welcomeSocket = open
ServerSocket()
open
TCP create socket,
wait for incoming
connection request connection setup connect to hostid, port=x
clientSocket =
connectionSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
2: Application Layer 8
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {

public static void main(String argv[]) throws Exception


{
String sentence;
String modifiedSentence;
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket, Socket clientSocket = new Socket("hostname", 6789);
connect to server
Create DataOutputStream outToServer =
output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
2: Application Layer 9
Example: Java client (TCP), cont.

Create BufferedReader inFromServer =


input stream new BufferedReader(new
attached to socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');

Read line modifiedSentence = inFromServer.readLine();


from server
System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
2: Application Layer 10
Example: Java server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception


{
String clientSentence;
Create String capitalizedSentence;
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789

Wait, on welcoming while(true) {


socket for contact
Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input new BufferedReader(new
stream, attached InputStreamReader(connectionSocket.getInputStream()));
to socket

2: Application Layer 11
Example: Java server (TCP), cont

Create output
stream, attached
DataOutputStream outToClient =
to socket
new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';


Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
} End of while loop,
loop back and wait for
another client connection

2: Application Layer 12
Socket programming with UDP

UDP: no “connection” between client


and server
 no handshaking
 sender explicitly attaches IP application viewpoint
address and port of destination
UDP provides unreliable transfer
 server must extract IP address,
of groups of bytes (“datagrams”)
port of sender from received
between client and server
datagram
UDP: transmitted data may be
received out of order, or lost

2: Application Layer 13
Client/server socket interaction: UDP
Server (running on hostid) Client

create socket, create socket,


port=x, for clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket

write reply to
serverSocket
read reply from
specifying client
clientSocket
host address,
port umber close
clientSocket

2: Application Layer 14
Example: Java client (UDP)
import java.io.*;
import java.net.*;

class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
Create new BufferedReader(new InputStreamReader(System.in));
client socket
DatagramSocket clientSocket = new DatagramSocket();
Translate
hostname to IP InetAddress IPAddress = InetAddress.getByName("hostname");
address using DNS
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
2: Application Layer 15
Example: Java client (UDP), cont.
Create datagram with
data-to-send, DatagramPacket sendPacket =
length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Send datagram clientSocket.send(sendPacket);


to server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Read datagram
clientSocket.receive(receivePacket);
from server
String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}

2: Application Layer 16
Example: Java server (UDP)
import java.io.*;
import java.net.*;

class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];

while(true)
{
Create space for
received datagram DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
2: Application Layer 17
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
port #, of InetAddress IPAddress = receivePacket.getAddress();
sender int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram
2: Application Layer 18
Chapter 2: Summary
Our study of network apps now complete!
 application service  specific protocols:
requirements:  http
 reliability, bandwidth, delay  ftp
 client-server paradigm  smtp, pop3

 Internet transport service  dns

model  socket programming


 connection-oriented, reliable:  client/server implementation
TCP  using tcp, udp sockets
 unreliable, datagrams: UDP

2: Application Layer 19
Chapter 2: Summary
Most importantly: learned about protocols

 typical request/reply message


 control vs. data msgs
exchange:
 in-based, out-of-band
 client requests info or service
 centralized vs. decentralized
 server responds with data,
 stateless vs. stateful
status code
 reliable vs. unreliable msg transfer
 message formats:
 “complexity at network edge”
 headers: fields giving info about
 security: authentication
data
 data: info being communicated

2: Application Layer 20

You might also like