• No results found

Networking.ppt

N/A
N/A
Protected

Academic year: 2020

Share "Networking.ppt"

Copied!
30
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Introduction

Java.net package provides support for

networking.

What makes Java a good language for

networking are the classes defined in the java.net package.

(3)
(4)

Sockets

Socket is the name given , in one

particular programming model, to the end points of a communication link

between processes.

When processes communicate over a

network, Java Technology uses streams model.

(5)

Sockets

Sockets:

Sockets hold two streams: an input

stream and an output stream.

Each end of the socket has a pair of

(6)

Socket

A process send data to another process

through a network by writing to the output stream associated with the Socket.

A process reads data written by another

process by reading from the input stream associated with the Socket.

(7)

Setting Up the Connection

To setup the network connection, one

machine must run a program that is waiting for a connection, and a

second machine must try to reach the first.

Set up of a network connection is

similar to a telephone system: One end must dial the other end, which must be listening.

(8)
(9)

Addressing the Connection

When you make a network connection,

you need to know the address or the name of the remote machine.

In addition, a network connection,

requires a port number, which you can think of as a telephone extension

(10)

Port Numbers

Port numbers in TCP/IP systems are

16-bit numbers and the values range from 0-65535.

Port numbers below 1024 are reserved

for predefined services.

Client port numbers are allocated by the

host OS to something not in use, while server port numbers are specified by the programmer, and are used to identify a particular service.

(11)

Both client and server must agree in

advance on which port to use.

If the port numbers used by the two

parts of the system do not agree, communication does not occur.

(12)

Server

A server is anything that has some

resource that can be shared.

There are compute servers, which

provide computing power;

print servers, which manage a collection

of printers;

disk servers, which provide networked

disk space;

(13)

Client

A client is simply any other entity that

wants to gain access to a particular server.

(14)

The notion of a socket allows a single computer to serve many different clients at once, as well as serving many different types of information.

This feat is managed by the introduction of a port,

which is a numbered socket on a particular machine.  A server process is said to "listen" to a port until a

client connects to it. A server is allowed to accept multiple clients connected to the same port number, although each session is unique.

To manage multiple client connections, a server

process must be multithreaded or have some other means of multiplexing the simultaneous I/O.

(15)

Local Host Info

// Demonstrate InetAddress. import java.net.*;

class InetAddressTest {

public static void main(String args[]) throws UnknownHostException

{

InetAddress Address = InetAddress.getLocalHost(); System.out.println(Address.getHostName());

System.out.println(Address.getHostAddress()); }

(16)

TCP/IP

TCP/IP sockets are used to implement

 reliable,

 bidirectional,

 persistent,

 point-to- point,

 stream-based connections between hosts on the Internet.

A socket can be used to connect Java's I/O

system to other programs that may reside either on the local machine or on any other machine on the Internet.

(17)

There are two kinds of TCP sockets in Java. One is for servers, and the other is for

clients.

The ServerSocket class is designed to be

a "listener," which waits for clients to connect before doing anything.

The Socket class is designed to connect to

server sockets and initiate protocol exchanges.

(18)

The creation of a Socket object

implicitly establishes a connection between the client and server.

There are no methods or constructors

that explicitly expose the details of establishing that connection.

(19)

Here are two constructors used to create

client sockets:

 Socket(String hostName, int port)

 Creates a socket connecting the local host to the named host and port; can throw an

UnknownHostException or an IOException.

 Socket(InetAddress ipAddress, int port)

 Creates a socket using a preexisting

InetAddress object and a port; can throw an IOException.

(20)

A socket can be examined at any time for

the address and port information associated with it, by use of the following methods:

InetAddress getInetAddress( )

Returns the InetAddress associated with

the Socket object.

int getPort( )

Returns the remote port to which this

Socket object is connected.

int getLocalPort( )

Returns the local port to which this Socket

(21)

Once the Socket object has been created, it

can also be examined to gain access to the input and output streams associated with it.

Each of these methods can throw an

IOException if the sockets have been

invalidated by a loss of connection on the Net.

These streams are used exactly like the I/O

streams receive data.

InputStream getInputStream( )Returns the InputStream

(22)

InputStream getInputStream( )

Returns the InputStream associated

with the invoking socket.

OutputStream getOutputStream()Returns the OutputStream

associated with the invoking socket.

void close()

Closes both the InputStream and

(23)

Socket functional calls

 socket (): Create a socket

 bind(): bind a socket to a local IP address and port #

 listen(): passively waiting for connections

 connect(): initiating connection to another socket

 accept(): accept a new connection

 Write(): write data to a socket

 Read(): read data from a socket

(24)

Socket-programming using TCP

TCP service: reliable byte stream transfer

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

client socket( )bind( ) server connect( ) socket( ) bind( ) listen( ) accept( ) send( ) recv( )

close( ) close( )

recv( )

send( )

TCP conn. request

(25)

Socket programming with TCP

Example client-server app:

 client reads line from standard input (inFromUser stream) , sends to server via socket (outToServer stream)

 server reads line from socket

 server converts line to uppercase, sends back to client

 client reads, prints modified line from socket

(inFromServer stream)

ou tT oS er ve r

to network from network

in F ro m S er ve r in F ro m U se r keyboard monitor Process clientSocket input stream input stream output stream TCP socket Input stream:

sequence of bytes into process

output stream:

sequence of bytes out of process

Client process

client TCP socket

(26)

Client/server socket interaction: TCP

wait for incoming connection request

connectionSocket = welcomeSocket.accept()

create socket, port=x, for

incoming request:

welcomeSocket = ServerSocket()

create socket,

connect to hostid, port=x

clientSocket = Socket()

close

connectionSocket

read reply from

clientSocket

close

clientSocket

Server (running on hostid) Client

send request using

clientSocket

read request from

connectionSocket

write reply to

connectionSocket

TCP

(27)

TCPClient.java

import java.io.*; import java.net.*; class TCPClient {

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

String sentence;

String modifiedSentence; BufferedReader inFromUser =

new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer =

(28)

TCPClient.java

BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

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

clientSocket.close();

} }

(29)

TCPServer.java

import java.io.*; import java.net.*; class TCPServer {

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

String clientSentence, capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789); while(true) {

Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient = new BufferedReader(new

(30)

TCPServer.java

DataOutputStream outToClient =

new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

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

} } }

References

Related documents

Viewed from the server side, the input stream is read to get commands from the client and the output stream is used to write results back to the client.. Viewed from the client

 When origin server is sending a stream through client, and stream passes through a proxy, proxy can use TCP to obtain the stream; but proxy still sends RTSP control messages to

The predicted aircraft count in the peak sector was lower using algorithm-generated airspace designs than the manually generated ones in the larger test airspace (i.e., 7-sector)

Moon Sky Noble Six Harms Solitary Piercing Rope Heavenly Officer Charm Death God Great Assembly Sky Charm Hook Spirit Fortune Virtue Prosperity Star Heavenly Virture Grand

EchoClient reads input from the user, sends it to the Echo server, gets a response from Page 2 sur 3 Reading from and Writing to a Socket.

Create input stream Create client socket, connect to server Create output stream attached to socket.. Network

reads k<=length characters from the stream, puts those characters starting from b[offset], and returns the total number of characters read. If the end of stream is reached,

1) client reads line from standard input (inFromUser stream) , sends to server via socket. (outToServer stream) 2) server reads line