1 / 18

TCP/IP Protocol Stack

TCP/IP Protocol Stack. Application. Sockets. (Gate to network). TCP. UDP. IP. Device Drivers. Programming with Sockets. Sockets are Berkeley software distribution UNIX interface to network protocols Endpoint of communication, has a type and one associated process

Download Presentation

TCP/IP Protocol Stack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TCP/IP Protocol Stack Application Sockets (Gate to network) TCP UDP IP Device Drivers

  2. Programming with Sockets • Sockets are Berkeley software distribution UNIX interface to network protocols • Endpoint of communication, has a type and one associated process • Uses file system model (open-close-read-write) • Internet vs. Unix domain

  3. Client-Server Architecture request Process request client response Host: www.vcu.edu Port: 80

  4. 4 steps in programming a client • Open a socket. • Open an input and output stream to the socket. • Read from and write to the socket according to the server's protocol. • Clean up.

  5. Socket in Java • Two important classes • Socket: a normal socket as communication end • ServerSocket: accept the incoming request • ServerSocket is an analogy to the custom service phone number, it will dispatch your call to a specialized staff--- normal Socket.

  6. Client Socket Creation Socket MyClient;MyClient = new Socket("Machine name", PortNumber); SOCKET DESCRIPTOR port (a number) on which the server you want the machine you are trying to open a connection to port numbers between 0 and 1,023 are reserved for for standard services, such as email, FTP, and HTTP. for your server, select one that is greater than 1,023

  7. Create Server Socket • If you are programming a server, then this is how you open a socket: • ServerSocket MyService;try {   MyServerice = new ServerSocket(PortNumber);        }        catch (IOException e) {           System.out.println(e);        }

  8. Use ServerSocket: listen, accept, and Create connections from clients. Socket clientSocket = null;try {   serviceSocket = MyService.accept();        }catch (IOException e) {   System.out.println(e);} A blocking call, will return when a request arrive

  9. Send Data to Socket at Client • PrintStream output;try {   output = new PrintStream(MyClient.getOutputStream());… String inL=“hello”; output.writeBytes(inL+"\n"); • }

  10. Read data from Socket at Client • DataInputStream input;try {   input = new DataInputStream(MyClient.getInputStream()); ….. String responseLine = input.readLine(); System.out.println("Server: " + responseLine);}

  11. Send Data to Socket at Server • Use the serviceSocket: returned from the accept() call. • PrintStream output;try {   output = new PrintStream(serviceSocket.getOutputStream());output.println(“this is server reply”); • }

  12. Read Data From Socket at Server • Same as client case • DataInputStream input;try {      input = new DataInputStream(serviceSocket.getInputStream()); • String req=input.readLine(); • }

  13. Close Socket Connection • On the server side: • try {   output.close();   input.close();   serviceSocket.close();    MyService.close();} catch (IOException e) {   System.out.println(e);} • On the client side: • try {        output.close();        input.close();    MyClient.close();} catch (IOException e) {   System.out.println(e);}

  14. A Simple Echo Server • // listen and accept connections.// Open input and output streamstry {           clientSocket = echoServer.accept();           is = new DataInputStream (clientSocket.getInputStream()); os = new PrintStream (clientSocket.getOutputStream());// As long as we receive data, echo that data back to the client.          while (true) {             line = is.readLine();             os.println(line);            }        }   catch (IOException e) {           System.out.println(e);        }    }} • import java.io.*;import java.net.*;public class echo3 {    public static void main(String args[]) {        ServerSocket echoServer = null;        String line;        DataInputStream is;        PrintStream os;        Socket clientSocket = null;        try {           echoServer = new ServerSocket(9999);        }        catch (IOException e) {           System.out.println(e);        }  

  15. A simple client responseLine = is.readLine(); System.out.println("Server: " + responseLine); responseLine = is.readLine(); System.out.println("Server: " + responseLine); responseLine = is.readLine(); System.out.println("Server: " + responseLine); } smtpSocket = new Socket("128.172.167.167", 9998); os = new DataOutputStream(smtpSocket.getOutputStream()); is = new DataInputStream(smtpSocket.getInputStream()); while (true){ inL=d.readLine(); os.writeBytes(inL+"\n"); if (inL.compareTo("quit")==0) break; // keep on reading from/to the socket till we receive the "Ok" from SMTP, // once we received that then we want to break.

  16. Reference • Class ServerSocke • A server socket waits for requests to come in over the network. It performs some operation based on that request, and then possibly returns a result to the requester. • accept() Listens for a connection to be made to this socket and accepts it. • getInetAddress() • Returns the local address of this server socket.

  17. Class Socket • This class implements client sockets (also called just "sockets"). A socket is an endpoint for communication between two machines. • Socket(InetAddress address, int port) • connect(SocketAddress endpoint)    Connects this socket to the server. • getPort()    Returns the remote port to which this socket is connected. • getLocalPort()           Returns the local port to which this socket is bound. • getInputStream()           Returns an input stream for this socket. • getOutputStream()           Returns an output stream for this socket. • getInetAddress()           Returns the address to which the socket is connected. • getLocalAddress()           Gets the local address to which the socket is bound.

  18. Other Parameters in Socket • Buffer size • Incoming buffer size • Outgoing buffer size • Time out or not • Otherwise a bad read will block your browser for ever. • Status check

More Related