Programming TCP Clients - PowerPoint PPT Presentation

About This Presentation
Title:

Programming TCP Clients

Description:

The InetAddress class is an object which store such type of data and has some ... URL = Uniform Resource Locator ... A URL is a UNIFORM RESOURCE LOCATOR. ... – PowerPoint PPT presentation

Number of Views:69
Avg rating:3.0/5.0
Slides: 21
Provided by: nbal
Category:

less

Transcript and Presenter's Notes

Title: Programming TCP Clients


1
Programming TCP Clients
2
InetAddress Class
  • An IP address identifies uniquely a host in the
    internet, which consists of 4 numbers (1 byte
    each one) in the IPV4. The InetAddress class is
    an object which store such type of data and has
    some functions to get the host name from the IP
    number or vice-versa
  • It has no constructors, but an object factory. A
    new object of this class is created with
  • InetAddress n InetAddress.getLocalHost()
  • InetAddress n InetAddress.getByName(nombre)
  • Following methods can be applied
  • String nombre n.getHostName()
  • String direccion n.getHostAddress()
  • See InetExample.java Names.java

3
(No Transcript)
4
The URL class
  • URL Uniform Resource Locator
  • It is used to connect to a web server and donload
    the resources it offers

PURL
5
The URL
  • A URL is a UNIFORM RESOURCE LOCATOR. It is a
    unique address of a resource a web server has
    released in the Internet.
  • A URL consists of 3 principal components
  • the protocol descriptor . The most used may be
    http which stands for HyperText Tranfer Protocol
    but there is also a File Transfer protocol (ftp),
    Gopher, File o News.
  • The hostname of the maschine which serves the
    resource
  • The name of the resource in that maschine
  • With Java, it is possible to open an URL and read
    its content as it were stored in a file. For
    that, it is necessary to create an URL object
    with at least the 3 components named above.

6
The URL
  • Constructors for a URL object
  • URL aRUL new URL(http//www.arminco.com/index.h
    tml)
  • URL aURL new URL(httpwww.arminco.com,index
    .html)
  • URL aURL new URL(http,www.arminco.com,80,in
    dex.html)
  • While creating a URL object an exception of the
    MalformedURLException class may be generated.
    Because of this, some measurements must be taken
    (use a try-catch)
  • try URL miURL new
    URL(....)
  • catch(MalFormedURLExcept
    ion e)
  • // code for reacting to the
    exception
  • Methods available for objects of the
  • getProtocol(), getHost(), getPort(), getFile(),
    openConnection()

7
The URL
  • If we know beforehand that the content of a URL
    is text, we can retrieve it with the following
    piece of program
  • import java.net.
  • import java,io.
  • public class LeerURL
  • public static void main(String args)
  • try
  • URL miURL new URL(http//www.dcc.uchile.cl
    )
  • URLConnection c miURL.openConnection()
  • BufferedReader in new BufferedReader (
  • new InputStreamReader(c.getInputStream()))
  • String line
  • while ((line in.readLine() ! null)
  • System.out.prinln(line)
  • c.close()
  • catch(MalFormedURLException e)
    System.out.pritnln(e)

8
The TCP Clients Socket
  • A socket is an abstraction representing one end
    in a communication link between two programs.
  • When an application wants to send/receive data
    to/from the net it has to open one
  • A socket is always bound to a port (although
    sometimes this will be not evident for the
    programmer, especially if the program is a client
    one). The port is the way an application
    identifies a certain socket with the TCP/IP layer
  • A server which runs on a server is associated
    also opens a socket bound to a certain port and
    start listening to requests from the clients
    whishing to establish a communication.
  • In order to establish a communication a client
    has to previously know 1- the port number, 2- the
    host address. With this information the client
    tries a rendezvous where the server is already
    running and listening.

9
TCP Client in Java (1)
  • For trying a rendezvous in Java (with a TCP
    server, which could have been written in any
    language) we must create an object of the Socket
    class.
  • Socket(String host, int port)
  • Socket csocket new Socket(hostname,7)
  • A host address can be given as an IP number or
    name dichato.dcc.uchile.cl or 192.24.80.40. In
    the first case Java will do the DNS lookup first.
  • The creation of a socket is a blocking statement.
    This means that the execution of the program will
    block until the creation returns a socket
    connected to the server or a null if it fails.
  • A failure to create a socket may arise if there
    is no such host in the internet, if the host is
    not currently reachable, of if there is no server
    listening to that port on that host. There is a
    timeout (default) for this instruction.
  • A failure will throw a checked Exception. It is
    therefore necessary to program the socket
    creation within a try-and-catch block

10
TCP Client in Java (2)
  • If the socket is created then we can open an
    inputStream and an ouputStream from that socket
    in order to read data from an write data into the
    server.
  • PrintWriter out new PrintWriter(csocket.getOutpu
    tStream(), true)
  • BufferedReader In new BufferedReader(new
  • InputStreamReader(calling.getInputStream
    ()))
  • Both getInputStream getOutputStream open byte
    oriented data streams. Printwriter
    BufferedReader are filters which convert bytes
    into text (string with end-of-line marks) and
    vice-versa.
  • out.print(hello) out.println(how are you ?)
  • String linea in.readLine()
  • readLine is a blocking sentence. For using it we
    must be sure the server will send an eol mark.

11

A Client for the date server
Protocol The date server just waits until
someone tries a rendezvous and answers with the
current date of the server. This means the client
must try rendezvous (1) and then read the
response of the server (2). Then the server
breaks the communication (3).
2
3
Client
Date server
1
13
DateClient
12

A Client for the echo server
Protocol The echo server waits until someone
makes a rendezvous. Then, it reads line-by-line
what the client sends and answers with the same.
The connection must be broken by the client. So
the client must 1) try a rendezvous, 2) send a
line, 3) read the answer. Then repeat 2 3 until
the client user brakes the dialogue
2
3
Client
Echo server
1
7
EchoClient
13

A finger client
The server waits for a request, gets a command
line from the client, analyses it and then sends
a (variable) set of lines, according to the query
and the status. After that, the server breakes
the communication. The client has to 1) try a
rendezvous, 2) send the query string, 3) read
lines until the communication is broken.
Finger -l ltusernamegt_at_host
3
Client
Finger server
1
7
Finger
14

A pop client for mail retrieving
This protocol is described in the rfc 1939
(internet protocol descriptions) See
http//www.ietf.org/rfc.html
cliente_pop lthostgt ltusernamegt ltpasswordgt
3
Client
mail pop server
1
110
Cliente_pop
15

A SMTP client for mail sending
We will provide a graphic interface for sending
mails from a local computer to an open STMP
server (most of them are open for computers
inside a LAN. The protocol consists in a dialogue
for identifying sender, receiver, subjet and body
of the mail.
2
Client
mail SMTP server
1
25
ClienteSMTP
16
A generic client in Java ?
  • import java.io.
  • import java.net.
  • public class Cliente
  • public static void main(String args)
    throws IOException
  • Socket echoSocket null
    PrintWriter out null BufferedReader in
    null
  • if (args.length ! 2)
  • System.out.println(Use
    java GClient lthostgt ltportgt )
  • int nport Integer.parseInt(args1)
  • try
  • echoSocket new
    Socket(args0, nport)
  • out new PrintWriter(echoSocket
    .getOutputStream(), true)
  • in new BufferedReader(new
  • InputStreamReader(echoSocket.getInputStream())
    )
  • catch (UnknownHostException
    e)
  • System.err.println("Don't
    know about host " args0)
  • System.exit(1)
  • catch (IOException e)

17
The Sockets constructors
  • Socket(String host, int port) The port must be in
    the range 1-65,535
  • Socket(Inet Address host, int port)The same but
    with an InetAddress object as parameter
  • Socket(String host, int port, String localHost,
    int localport) Every TCP communication consists
    of a local and remote host and a local and remote
    port. This constructor allows us to specify all
    them. Specifying local address makes only sense
    when local computer is multihomed (more than one
    address). Null default address. Sometimes it is
    necessary to specify the local port (firewalls).
    0 the system will assign a random port number
    from the still available. Numbers from 1 to 1025
    should not be used as they are reserved for well
    known services like echo, telnet finger, ftp.

18
More Socket methods in Java
  • InetAddress getInetAddress() returns the IP
    address of the remote host to which the socket is
    connected
  • int getPort() returns the port number to which
    the socket at the other extreme is bound
  • InetAddress getLocalAddress() returns the IP
    address of the local host
  • int getLocalPort() returns the port number to to
    which the socket is bound.
  • void setSoTimeout(int timeout)sets timeout in
    milliseconds for a read operation on this socket.
    0 no timeout, this can block the operation
    indefinitely. If the reading operation is not
    completed in that time an InterruptedIOException
    is thrown
  • int getSoTimeout() returns the timeout of the
    socket

19
More Socket methods in Java
  • void setTcpNoDelay(boolean on) Disables/Enables
    using the Nagels algorithm which makes TCP more
    efficient by delaying the writing (sending) of
    small amounts of data until there is enough data
    to send. This may introduce some unacceptable
    delays for some applications.
  • boolean getTcpNoDelay() returns whether the
    Nagels algorithm is working or not
  • void setSoLinger(boolean on, int val) allows to
    set a linger time-out (in milliseconds). Linger
    is the time the socket communication remains
    open by the system after the program closes it.
    This will allow to receive packages for
    confirmation which are still delayed and avoid
    the using of the same port on the same machine
    for some 4 min.
  • int getSoLinger () returns the current linger
    setting or 1 if not set.
  • void setSendBufferSize(int size)
  • int getSendBufferSize()
  • void setReceiveBufferSize(int size)
  • int getReceiveBufferSize()

Sockets.java
20
Socket originated Exceptions
  • Many of the Socket constructors and methods throw
    an exception. These instructions should be
    programmed inside a try-and-catch block
  • Most of the thrown exceptions are objects from a
    subclass of the IOException class
  • BindException the requested local port or
    address could not be used. Typically when the
    port is already used or it is a system port or
    the local address is not a valid one.
  • ConnectException connection refused because
    there was no server listening to that port on the
    remote host.
  • NoRouteToHostException remote host could not be
    reached typically because of network problems or
    a firewall
  • UnknownHostException the given host address is
    not valid (DNS Lookup filed)
Write a Comment
User Comments (0)
About PowerShow.com