(AJP) Chapter 4 For Student
(AJP) Chapter 4 For Student
(AJP) Chapter 4 For Student
INFORMATICS
DEPARTMENT OF SOFTWARE
ENGINEERING
BY SAMSON R.
Chapter four
networking
Contents
Introduction.
Socket Programming
Establishing server using stream socket.
Establishing client using stream socket.
Client/server interaction with stream sockets
Introduction
The term network programming refers to writing programs
that execute across multiple devices (computers), in which
No handshake
Starts With
handshake
TCP CONNECTION
A client program creates a socket on its end of the communication
and attempts to connect that socket to a server.
When the connection is made, the server creates a socket object on its
end of the communication.
Then client and server can communicate by writing to and reading
from the socket.
The java.net.Socket class represents a socket, and the
java.net.ServerSocket class provides a mechanism for the server
program to listen for clients and establish connections with them.
Cont..
The following steps occur when establishing a TCP connection
between two computers using sockets:
The server instantiates a ServerSocket object, denoting which port
number communication is to occur on.
The server invokes the accept() method of the ServerSocket class.
This method waits until a client connects to the server on the given
port.
After the server is waiting, a client instantiates a Socket object,
specifying the server name and port number to connect to.
Cont..
The constructor of the Socket class attempts to connect the
client to the specified server and port number.
If communication is established, the client now has a
Socket object capable of communicating with the server.
On the server side, the accept() method returns a reference
to a new socket on the server that is connected to the
client's socket.
Cont..
After the connections are established, communication can occur
using I/O streams.
Each socket has both an OutputStream and an InputStream.
The client's OutputStream is connected to the server's
InputStream, and the client's InputStream is connected to the
server's OutputStream.
TCP is a two way communication protocol, so data can be sent
across both streams at the same time.
Cont..
There are following useful classes providing complete set of methods to
implement sockets.
ServerSocket Class
The java.net.ServerSocket class is used by server applications to obtain
a port and listen for client requests.
Socket Class
The java.net.Socket class represents the socket that both the client and
server use to communicate with each other.
The client obtains a Socket object by instantiating one, whereas the server
obtains a Socket object from the return value of the accept() method.
ServerSocket Class Constructors
public ServerSocket(int port) throws IOException Attempts to create a server socket
bound to the specified port. An exception occurs if the port is already bound by another
application.
public ServerSocket(int port, int backlog) throws IOException Similar to the previous
constructor, the backlog parameter specifies how many incoming clients to store in a wait
queue.
public int getLocalPort() Returns the port that the server socket is listening on. This
method is useful if you passed in 0 as the port number in a constructor and let the server
find a port for you.
public Socket accept() throws IOException Waits for an incoming client. This method
blocks until either a client connects to the server on the specified port or the socket times
out, assuming that the time-out value has been set using the setSoTimeout() method.
Otherwise, this method blocks indefinitely
public void setSoTimeout(int timeout) Sets the time-out value for how long the server
socket waits for a client during the accept().
public void bind(SocketAddress host, int backlog) Binds the socket to the specified
server and port in the SocketAddress object. Use this method if you instantiated the
ServerSocket using the no-argument constructor.
Socket Class Constructors
public Socket(InetAddress host, int port) throws IOException This method is identical
to the previous constructor, except that the host is denoted by an InetAddress object.
public Socket(String host, int port, InetAddress localAddress, int localPort) throws
IOException. Connects to the specified host and port, creating a socket on the local host at
the specified address and port.
public Socket() Creates an unconnected socket. Use the connect() method to connect this
socket to a server.
Socket Class Methods
public void connect(SocketAddress host, int timeout) throws IOException This method
connects the socket to the specified host. This method is needed only when you instantiated
the Socket using the no-argument constructor.
public InetAddress getInetAddress() This method returns the address of the other
computer that this socket is connected to.
public int getPort() Returns the port the socket is bound to on the remote machine.
public int getLocalPort() Returns the port the socket is bound to on the local machine.
System.out.println(in.readUTF());
public serverSoc(int port) throws IOException { DataOutputStream out = new
this.ss = new ServerSocket(port); DataOutputStream(server.getOutputStream());
} out.writeUTF("Thank you for connecting to \n Goodbye!");
}
}
class testServer{ catch(IOException exx)
public static void main (String [] args) throws {}
IOException }
{ }
Establishing a Client Using Stream Sockets
Four steps to create a simple client in Java
try (
import java.io.DataInputStream; Socket client = newSocket(InetAddress.getLocalHost(),3000)) {
import java.io.DataOutputStream;
System.out.println("Client 1 is connected to Server");
import java.io.IOException;
OutputStream outToServer = client.getOutputStream();
import java.io.InputStream;
DataOutputStream out = new
import java.io.OutputStream;
DataOutputStream(outToServer);
import java.net.InetAddress;
import java.net.Socket; out.writeUTF("Hello Server");
{ }
try }catch(IOException e)
{ {
System.out.println("Connecting on port " + 3000); } }}