SlideShare una empresa de Scribd logo
1 de 30
JAVA Socket Programming

        2003.3.19
       Joonbok Lee
          KAIST
What is a socket?
• Socket
   – The combination of an IP address and a port number. (RFC 793
     ,original TCP specification)
   – The name of the Berkeley-derived application programming
     interfaces (APIs) for applications using TCP/IP protocols.
   – Two types
       • Stream socket : reliable two-way connected communication streams
       • Datagram socket


• Socket pair
   – Specified the two end points that uniquely identifies each TCP
     connection in an internet.
   – 4-tuple: (client IP address, client port number, server IP address,
     server port number)
Client-server applications
• Implementation of a protocol standard defined in an RFC. (FTP,
  HTTP, SMTP…)
    – Conform to the rules dictated by the RFC.
    – Should use the port number associated with the protocol.

• Proprietary client-server application.
    – A single developer( or team) creates both client and server
      program.
    – The developer has complete control.
    – Must be careful not to use one of the well-known port number
      defined in the RFCs.

    * well-known port number : managed by the Internet Assigned
       Numbers Authority(IANA)
Socket Programming with TCP




  Figure 2.6-1: Processes communicating through TCP
  sockets

The application developer has the ability to fix a few TCP
parameters, such as maximum buffer and maximum segment sizes.
Sockets for server and client
• Server
   – Welcoming socket
      • Welcomes some initial contact from a client.
   – Connection socket
      • Is created at initial contact of client.
      • New socket that is dedicated to the particular client.

• Client
   – Client socket
      • Initiate a TCP connection to the server by creating a socket
        object. (Three-way handshake)
      • Specify the address of the server process, namely, the IP
        address of the server and the port number of the process.
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
•   sendto(): send a datagram to another UDP socket
•   recvfrom(): read a datagram from a UDP socket
•   close(): close a socket (tear down the connection)
Sockets




Figure 2.6-2: Client socket, welcoming socket and connection
socket
Socket-programming using TCP
TCP service: reliable byte stream transfer
                                                 socket( )
                                                 bind( )         server
                socket( )                        listen( )
  client        bind( )
                connect( )   TCP conn. request
                                                   accept( )
                 send( )     TCP ACK
                                                   recv( )

                recv( )
                                                  send( )
                close( )                          close( )

controlled by
  application     process
                                                      process
   developer      socket
                                                      socket
controlled by    TCP with
                                                     TCP with
   operating     buffers,         internet
      system                                         buffers,
                 variables
                                                     variables
Socket programming with TCP
                                                                     keyboard               monitor


Example client-server app:
•   client reads line from standard




                                                                            inFromUser
                                                             input
    input (inFromUser stream) ,                           stream

    sends to server via socket               Client
                                             Process                                       Input stream:
    (outToServer stream)                     process                                       sequence of bytes
•   server reads line from socket     output stream:                                       into process
•   server converts line to           sequence of bytes
    uppercase, sends back to client   out of process




                                                                                                inFromServer
                                                                            outToServer
•   client reads, prints modified                      output
                                                      stream
                                                                                                                  input
                                                                                                               stream

    line from socket
    (inFromServer stream)                                                client TCP
                                                                            clientSocket
                                                                            socket                                          TCP
                                                                                                                          socket

                                                                     to network           from network
Client/server socket interaction: TCP
Server (running on hostid)                     Client
     create socket,
     port=x, for
     incoming request:
     welcomeSocket =
        ServerSocket()

                            TCP              create socket,
     wait for incoming
     connection request connection   setup   connect to hostid, port=x
     connectionSocket =                      clientSocket =
     welcomeSocket.accept()                         Socket()

                                               send request using
     read request from                         clientSocket
     connectionSocket

     write reply to
     connectionSocket                           read reply from
                                                clientSocket
     close
     connectionSocket                           close
                                                clientSocket
JAVA TCP Sockets
•   In Package java.net
    – java.net.Socket
        • Implements client sockets (also called just “sockets”).
        • An endpoint for communication between two machines.
        • Constructor and Methods
              – Socket(String host, int port): Creates a stream socket and connects it to the
                specified port number on the named host.
              – InputStream getInputStream()
              – OutputStream getOutputStream()
              – close()

    – java.net.ServerSocket
        •   Implements server sockets.
        •   Waits for requests to come in over the network.
        •   Performs some operation based on the request.
        •   Constructor and Methods
              – ServerSocket(int port)
              – Socket Accept(): Listens for a connection to be made to this socket and
                accepts it. This method blocks until a connection is made.
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 =
             new DataOutputStream(clientSocket.getOutputStream());
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();
                       
     }
}
TCPServer.java
import java.io.*;
import java.net.*;
class TCPServer {
  public static void main(String argv[]) throws Exception
       {
         String clientSentence;
         String capitalizedSentence;
 
         ServerSocket welcomeSocket = new
   ServerSocket(6789);
    
         while(true) {

             Socket connectionSocket = welcomeSocket.accept();
          
             BufferedReader inFromClient = new BufferedReader(new
                 InputStreamReader(connectionSocket.getInputStream()));
TCPServer.java

           DataOutputStream  outToClient =
                  new DataOutputStream(connectionSocket.getOutputStream());
          
             clientSentence = inFromClient.readLine();
          
             capitalizedSentence = clientSentence.toUpperCase() + 'n';

              outToClient.writeBytes(capitalizedSentence);
           
       }
    }
}
Socket Programming with
                UDP
• UDP
   –   Connectionless and unreliable service.
   –   There isn’t an initial handshaking phase.
   –   Doesn’t have a pipe.
   –   transmitted data may be received out of order, or lost



• Socket Programming with UDP
   – No need for a welcoming socket.
   – No streams are attached to the sockets.
   – the sending hosts creates “packets” by attaching the IP destination
     address and port number to each batch of bytes.
   – The receiving process must unravel to received packet to obtain the
     packet’s information bytes.
Client/server socket interaction: UDP
Server (running on hostid)   Client

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

      write reply to
      serverSocket
      specifying client        read reply from
      host address,            clientSocket
      port umber               close
                               clientSocket
Example: Java client (UDP)
                                     keyboard               monitor




                                             inFromUser
                             input
                          stream


            Client
            Process
                                                                                                   Input: receives
             process
                                                                                                   packet (TCP
                                                                                                   received “byte
 Output: sends
                                                                                                   stream”)
 packet (TCP sent



                                                                 receivePacket
                                             sendPacket
 “byte stream”)          UDP                                                       UDP
                       packet                                                    packet



                                          client UDP
                                            clientSocket
                                             socket                                         UDP
                                                                                          socket

                                     to network           from network
JAVA UDP Sockets
• In Package java.net
  – java.net.DatagramSocket
    • A socket for sending and receiving datagram
      packets.
    • Constructor and Methods
       – DatagramSocket(int port): Constructs a datagram
         socket and binds it to the specified port on the local
         host machine.
       – void receive( DatagramPacket p)
       – void send( DatagramPacket p)
       – void close()
UDPClient.java
import java.io.*;
import java.net.*;
    
   class UDPClient {
       public static void main(String args[]) throws Exception
       {
    
         BufferedReader inFromUser =
           new BufferedReader(new InputStreamReader(System.in));
    
         DatagramSocket clientSocket = new
   DatagramSocket();
    
         InetAddress IPAddress =
   InetAddress.getByName("hostname");
    
         byte[] sendData = new byte[1024];
         byte[] receiveData = new byte[1024];
    
         String sentence = inFromUser.readLine();
    
         sendData = sentence.getBytes();
UDPClient.java
      DatagramPacket sendPacket =
              new DatagramPacket(sendData, sendData.length,
     IPAddress, 9876);
      
      clientSocket.send(sendPacket);
      
      DatagramPacket receivePacket =
              new DatagramPacket(receiveData, receiveData.length);
      
      clientSocket.receive(receivePacket);
      
      String modifiedSentence =
              new String(receivePacket.getData());
      
      System.out.println("FROM SERVER:" + modifiedSentence);
     
      clientSocket.close();
      
         }
     }
UDPServer.java
import java.io.*;
import java.net.*;
    
class UDPServer {
     public static void main(String args[]) throws Exception
       {
    
         DatagramSocket serverSocket = new
   DatagramSocket(9876);
    
         byte[] receiveData = new byte[1024];
         byte[] sendData  = new byte[1024];
    
         while(true)
           {
    
             DatagramPacket receivePacket =
                new DatagramPacket(receiveData, receiveData.length);
    
             serverSocket.receive(receivePacket);
    
             String sentence = new String(receivePacket.getData());
UDPServer.java
 
        InetAddress IPAddress = receivePacket.getAddress();
      
        int port = receivePacket.getPort();
      
       String capitalizedSentence = sentence.toUpperCase();
        sendData = capitalizedSentence.getBytes();
      
        DatagramPacket sendPacket =
            new DatagramPacket(sendData, sendData.length, IPAddress, port);
      
         serverSocket.send(sendPacket);

      }
   }
}
Building a Simple Web Server
• Handles only one HTTP request
• Accepts and parses the HTTP request
• Gets the required file from the server’s
  file system.
• Creates an HTTP response message
  consisting of the requested file
  preceded by header lines
• Sends the response directly to the client
WebServer.java
import java.io.*;
import java.net.*;
import java.util.*;
class WebServer{
    public static void main(String argv[]) throws Exception  {
          String requestMessageLine;
          String fileName;
          ServerSocket listenSocket = new ServerSocket(6789);
          Socket connectionSocket = listenSocket.accept();

          BufferedReader inFromClient =
                 new BufferedReader(new
                      InputStreamReader(connectionSocket.getInputStream()));

          DataOutputStream outToClient =
              new DataOutputStream(connectionSocket.getOutputStream());
       
WebServer.java
requestMessageLine = inFromClient.readLine();
         
StringTokenizer tokenizedLine =
     new StringTokenizer(requestMessageLine);
     
if (tokenizedLine.nextToken().equals("GET")){
          fileName = tokenizedLine.nextToken();
          if (fileName.startsWith("/") == true )
                   fileName  = fileName.substring(1);
          
          File file = new File(fileName);
           int numOfBytes = (int) file.length();
          FileInputStream inFile  = new FileInputStream (fileName);
           byte[] fileInBytes = new byte[numOfBytes];
           
          inFile.read(fileInBytes);
WebServer.java
     outToClient.writeBytes("HTTP/1.0 200 Document Followsrn");
     
     if (fileName.endsWith(".jpg"))
          outToClient.writeBytes("Content-Type: image/jpegrn");
              
     if (fileName.endsWith(".gif"))
          outToClient.writeBytes("Content-Type: image/gifrn");
         
     outToClient.writeBytes("Content-Length: " + numOfBytes + "rn");
             
     outToClient.writeBytes("rn");
     outToClient.write(fileInBytes, 0, numOfBytes);
     connectionSocket.close();
   }
    else System.out.println("Bad Request Message");
  }
}
Concurrent server
• Servers need to handle a new
  connection request while processing
  previous requests.
  – Most TCP servers are designed to be
    concurrent.
• When a new connection request arrives
  at a server, the server accepts and
  invokes a new process to handle the
  new client.
How to handle the port numbers
cosmos% netstat –a –n –f inet
Active Internet connections (including servers)
Proto      Recv-Q Send-Q Local Address            Foreign Address      (state)
tcp        0        0          *.23               *.*                  LISTEN

cosmos% netstat –a –n –f inet
Proto   Recv-Q Send-Q Local Address               Foreign Address      (state)
tcp     0         0           192.249.24.2.23     192.249.24.31.1029   ESTABLISHED
tcp     0         0           *.23                *.*                  LISTEN

cosmos% netstat –a –n –f inet
Proto   Recv-Q Send-Q Local Address               Foreign Address      (state)
tcp     0         0           192.249.24.2.23     192.249.24.31.1029   ESTABLISHED
tcp     0         0           192.249.24.2.23     192.249.24.31.1030   ESTABLISHED
tcp     0         0           *.23                *.*                  LISTEN
Socket programming: references

C-language tutorial (audio/slides):
• “Unix Network Programming” (J. Kurose),
http://manic.cs.umass.edu/~amldemo/courseware/intro.html

Java-tutorials:
• “All About Sockets” (Sun tutorial),
  http://www.javaworld.com/javaworld/jw-12-1996/jw-12-
  sockets.html
• “Socket Programming in Java: a tutorial,”
  http://www.javaworld.com/javaworld/jw-12-1996/jw-12-
  sockets.html

Más contenido relacionado

La actualidad más candente

NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
Muuluu
 
Internet control message protocol
Internet control message protocolInternet control message protocol
Internet control message protocol
asimnawaz54
 
5.5.1.2 packet tracer configure ios intrusion prevention system (ips) using...
5.5.1.2 packet tracer   configure ios intrusion prevention system (ips) using...5.5.1.2 packet tracer   configure ios intrusion prevention system (ips) using...
5.5.1.2 packet tracer configure ios intrusion prevention system (ips) using...
Salem Trabelsi
 

La actualidad más candente (20)

Transport Layer Services : Multiplexing And Demultiplexing
Transport Layer Services : Multiplexing And DemultiplexingTransport Layer Services : Multiplexing And Demultiplexing
Transport Layer Services : Multiplexing And Demultiplexing
 
NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
 
My ppt..priya
My ppt..priyaMy ppt..priya
My ppt..priya
 
Np unit2
Np unit2Np unit2
Np unit2
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
 
Transport layer
Transport layer Transport layer
Transport layer
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
Subnetting
SubnettingSubnetting
Subnetting
 
Internet control message protocol
Internet control message protocolInternet control message protocol
Internet control message protocol
 
Distance Vector Routing Protocols
Distance Vector Routing ProtocolsDistance Vector Routing Protocols
Distance Vector Routing Protocols
 
TFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer ProtocolTFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer Protocol
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
 
Socket Programming_theory.ppt
Socket Programming_theory.pptSocket Programming_theory.ppt
Socket Programming_theory.ppt
 
5.5.1.2 packet tracer configure ios intrusion prevention system (ips) using...
5.5.1.2 packet tracer   configure ios intrusion prevention system (ips) using...5.5.1.2 packet tracer   configure ios intrusion prevention system (ips) using...
5.5.1.2 packet tracer configure ios intrusion prevention system (ips) using...
 
Transport layer (computer networks)
Transport layer (computer networks)Transport layer (computer networks)
Transport layer (computer networks)
 
Tcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport LayerTcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport Layer
 
Socket programming using C
Socket programming using CSocket programming using C
Socket programming using C
 
Packet sniffing
Packet sniffingPacket sniffing
Packet sniffing
 
Transport Layer Security (TLS)
Transport Layer Security (TLS)Transport Layer Security (TLS)
Transport Layer Security (TLS)
 
Network Address Translation (NAT)
Network Address Translation (NAT)Network Address Translation (NAT)
Network Address Translation (NAT)
 

Destacado

Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket Programming
Mousmi Pawar
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)
UC San Diego
 
Routing Protocols and Concepts - Chapter 1
Routing Protocols and Concepts - Chapter 1Routing Protocols and Concepts - Chapter 1
Routing Protocols and Concepts - Chapter 1
CAVC
 
14 file handling
14 file handling14 file handling
14 file handling
APU
 
basics of file handling
basics of file handlingbasics of file handling
basics of file handling
pinkpreet_kaur
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket Tutorial
Guo Albert
 
PROTESIS - Tipos y Caracteristicas
PROTESIS - Tipos y CaracteristicasPROTESIS - Tipos y Caracteristicas
PROTESIS - Tipos y Caracteristicas
Marcial Lezama Stgo
 

Destacado (17)

Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket Programming
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)
 
Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using java
 
prosthetics
prostheticsprosthetics
prosthetics
 
Java Input Output and File Handling
Java Input Output and File HandlingJava Input Output and File Handling
Java Input Output and File Handling
 
Routing Protocols and Concepts - Chapter 1
Routing Protocols and Concepts - Chapter 1Routing Protocols and Concepts - Chapter 1
Routing Protocols and Concepts - Chapter 1
 
14 file handling
14 file handling14 file handling
14 file handling
 
basics of file handling
basics of file handlingbasics of file handling
basics of file handling
 
Congestion control in TCP
Congestion control in TCPCongestion control in TCP
Congestion control in TCP
 
TCP congestion control
TCP congestion controlTCP congestion control
TCP congestion control
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket Tutorial
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
Socket programming-tutorial-sk
Socket programming-tutorial-skSocket programming-tutorial-sk
Socket programming-tutorial-sk
 
Java Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsJava Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and Streams
 
Amputaciones de miembro_inferior
Amputaciones de miembro_inferiorAmputaciones de miembro_inferior
Amputaciones de miembro_inferior
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPT
 
PROTESIS - Tipos y Caracteristicas
PROTESIS - Tipos y CaracteristicasPROTESIS - Tipos y Caracteristicas
PROTESIS - Tipos y Caracteristicas
 

Similar a Socket programming

Socket programming in C
Socket programming in CSocket programming in C
Socket programming in C
Deepak Swain
 
Socket programming
Socket programmingSocket programming
Socket programming
Divya Sharma
 
Socket programming
Socket programmingSocket programming
Socket programming
harsh_bca06
 
Socket网络编程
Socket网络编程Socket网络编程
Socket网络编程
qhm123
 

Similar a Socket programming (20)

Java_Socket_Programming (2).ppt
Java_Socket_Programming (2).pptJava_Socket_Programming (2).ppt
Java_Socket_Programming (2).ppt
 
Java_Socket_Programming (2).ppt
Java_Socket_Programming (2).pptJava_Socket_Programming (2).ppt
Java_Socket_Programming (2).ppt
 
Socket & Server Socket
Socket & Server SocketSocket & Server Socket
Socket & Server Socket
 
Socket programming in C
Socket programming in CSocket programming in C
Socket programming in C
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
Java 1
Java 1Java 1
Java 1
 
17-Networking.pdf
17-Networking.pdf17-Networking.pdf
17-Networking.pdf
 
java networking
 java networking java networking
java networking
 
Sockets
SocketsSockets
Sockets
 
Java - Sockets
Java - SocketsJava - Sockets
Java - Sockets
 
Unit 8 Java
Unit 8 JavaUnit 8 Java
Unit 8 Java
 
socket programming
 socket programming  socket programming
socket programming
 
socket programming
socket programming socket programming
socket programming
 
T2
T2T2
T2
 
Lan chat system
Lan chat systemLan chat system
Lan chat system
 
Byte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptxByte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptx
 
Socket programming
Socket programmingSocket programming
Socket programming
 
Socket programming
Socket programmingSocket programming
Socket programming
 
Java socket programming
Java socket programmingJava socket programming
Java socket programming
 
Socket网络编程
Socket网络编程Socket网络编程
Socket网络编程
 

Último

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Último (20)

ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 

Socket programming

  • 1. JAVA Socket Programming 2003.3.19 Joonbok Lee KAIST
  • 2. What is a socket? • Socket – The combination of an IP address and a port number. (RFC 793 ,original TCP specification) – The name of the Berkeley-derived application programming interfaces (APIs) for applications using TCP/IP protocols. – Two types • Stream socket : reliable two-way connected communication streams • Datagram socket • Socket pair – Specified the two end points that uniquely identifies each TCP connection in an internet. – 4-tuple: (client IP address, client port number, server IP address, server port number)
  • 3. Client-server applications • Implementation of a protocol standard defined in an RFC. (FTP, HTTP, SMTP…) – Conform to the rules dictated by the RFC. – Should use the port number associated with the protocol. • Proprietary client-server application. – A single developer( or team) creates both client and server program. – The developer has complete control. – Must be careful not to use one of the well-known port number defined in the RFCs. * well-known port number : managed by the Internet Assigned Numbers Authority(IANA)
  • 4. Socket Programming with TCP Figure 2.6-1: Processes communicating through TCP sockets The application developer has the ability to fix a few TCP parameters, such as maximum buffer and maximum segment sizes.
  • 5. Sockets for server and client • Server – Welcoming socket • Welcomes some initial contact from a client. – Connection socket • Is created at initial contact of client. • New socket that is dedicated to the particular client. • Client – Client socket • Initiate a TCP connection to the server by creating a socket object. (Three-way handshake) • Specify the address of the server process, namely, the IP address of the server and the port number of the process.
  • 6. 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 • sendto(): send a datagram to another UDP socket • recvfrom(): read a datagram from a UDP socket • close(): close a socket (tear down the connection)
  • 7. Sockets Figure 2.6-2: Client socket, welcoming socket and connection socket
  • 8. Socket-programming using TCP TCP service: reliable byte stream transfer socket( ) bind( ) server socket( ) listen( ) client bind( ) connect( ) TCP conn. request accept( ) send( ) TCP ACK recv( ) recv( ) send( ) close( ) close( ) controlled by application process process developer socket socket controlled by TCP with TCP with operating buffers, internet system buffers, variables variables
  • 9. Socket programming with TCP keyboard monitor Example client-server app: • client reads line from standard inFromUser input input (inFromUser stream) , stream sends to server via socket Client Process Input stream: (outToServer stream) process sequence of bytes • server reads line from socket output stream: into process • server converts line to sequence of bytes uppercase, sends back to client out of process inFromServer outToServer • client reads, prints modified output stream input stream line from socket (inFromServer stream) client TCP clientSocket socket TCP socket to network from network
  • 10. Client/server socket interaction: TCP Server (running on hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP create socket, wait for incoming connection request connection setup connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket
  • 11. JAVA TCP Sockets • In Package java.net – java.net.Socket • Implements client sockets (also called just “sockets”). • An endpoint for communication between two machines. • Constructor and Methods – Socket(String host, int port): Creates a stream socket and connects it to the specified port number on the named host. – InputStream getInputStream() – OutputStream getOutputStream() – close() – java.net.ServerSocket • Implements server sockets. • Waits for requests to come in over the network. • Performs some operation based on the request. • Constructor and Methods – ServerSocket(int port) – Socket Accept(): Listens for a connection to be made to this socket and accepts it. This method blocks until a connection is made.
  • 12. 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 =          new DataOutputStream(clientSocket.getOutputStream());
  • 13. 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();                    } }
  • 14. TCPServer.java import java.io.*; import java.net.*; class TCPServer {   public static void main(String argv[]) throws Exception     {       String clientSentence;       String capitalizedSentence;   ServerSocket welcomeSocket = new ServerSocket(6789);   while(true) { Socket connectionSocket = welcomeSocket.accept();            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
  • 15. TCPServer.java            DataOutputStream  outToClient =              new DataOutputStream(connectionSocket.getOutputStream());            clientSentence = inFromClient.readLine();            capitalizedSentence = clientSentence.toUpperCase() + 'n'; outToClient.writeBytes(capitalizedSentence);         } } }
  • 16. Socket Programming with UDP • UDP – Connectionless and unreliable service. – There isn’t an initial handshaking phase. – Doesn’t have a pipe. – transmitted data may be received out of order, or lost • Socket Programming with UDP – No need for a welcoming socket. – No streams are attached to the sockets. – the sending hosts creates “packets” by attaching the IP destination address and port number to each batch of bytes. – The receiving process must unravel to received packet to obtain the packet’s information bytes.
  • 17. Client/server socket interaction: UDP Server (running on hostid) Client create socket, port=x, for create socket, clientSocket = incoming request: DatagramSocket() serverSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client read reply from host address, clientSocket port umber close clientSocket
  • 18. Example: Java client (UDP) keyboard monitor inFromUser input stream Client Process Input: receives process packet (TCP received “byte Output: sends stream”) packet (TCP sent receivePacket sendPacket “byte stream”) UDP UDP packet packet client UDP clientSocket socket UDP socket to network from network
  • 19. JAVA UDP Sockets • In Package java.net – java.net.DatagramSocket • A socket for sending and receiving datagram packets. • Constructor and Methods – DatagramSocket(int port): Constructs a datagram socket and binds it to the specified port on the local host machine. – void receive( DatagramPacket p) – void send( DatagramPacket p) – void close()
  • 20. UDPClient.java import java.io.*; import java.net.*;   class UDPClient {     public static void main(String args[]) throws Exception     {         BufferedReader inFromUser =         new BufferedReader(new InputStreamReader(System.in));         DatagramSocket clientSocket = new DatagramSocket();         InetAddress IPAddress = InetAddress.getByName("hostname");         byte[] sendData = new byte[1024];       byte[] receiveData = new byte[1024];         String sentence = inFromUser.readLine();         sendData = sentence.getBytes();
  • 21. UDPClient.java       DatagramPacket sendPacket =          new DatagramPacket(sendData, sendData.length, IPAddress, 9876);    clientSocket.send(sendPacket);    DatagramPacket receivePacket =          new DatagramPacket(receiveData, receiveData.length);    clientSocket.receive(receivePacket);    String modifiedSentence =          new String(receivePacket.getData());    System.out.println("FROM SERVER:" + modifiedSentence);       clientSocket.close();       } }
  • 22. UDPServer.java import java.io.*; import java.net.*;   class UDPServer {   public static void main(String args[]) throws Exception     {         DatagramSocket serverSocket = new DatagramSocket(9876);         byte[] receiveData = new byte[1024];       byte[] sendData  = new byte[1024];         while(true)         {             DatagramPacket receivePacket =              new DatagramPacket(receiveData, receiveData.length);             serverSocket.receive(receivePacket);             String sentence = new String(receivePacket.getData());
  • 23. UDPServer.java      InetAddress IPAddress = receivePacket.getAddress();      int port = receivePacket.getPort();     String capitalizedSentence = sentence.toUpperCase();         sendData = capitalizedSentence.getBytes();      DatagramPacket sendPacket =        new DatagramPacket(sendData, sendData.length, IPAddress, port);       serverSocket.send(sendPacket);       } } }
  • 24. Building a Simple Web Server • Handles only one HTTP request • Accepts and parses the HTTP request • Gets the required file from the server’s file system. • Creates an HTTP response message consisting of the requested file preceded by header lines • Sends the response directly to the client
  • 25. WebServer.java import java.io.*; import java.net.*; import java.util.*; class WebServer{     public static void main(String argv[]) throws Exception  {           String requestMessageLine;      String fileName;           ServerSocket listenSocket = new ServerSocket(6789);      Socket connectionSocket = listenSocket.accept();           BufferedReader inFromClient =             new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());        
  • 26. WebServer.java requestMessageLine = inFromClient.readLine();           StringTokenizer tokenizedLine = new StringTokenizer(requestMessageLine);       if (tokenizedLine.nextToken().equals("GET")){           fileName = tokenizedLine.nextToken();           if (fileName.startsWith("/") == true )               fileName  = fileName.substring(1);            File file = new File(fileName);       int numOfBytes = (int) file.length();           FileInputStream inFile  = new FileInputStream (fileName);            byte[] fileInBytes = new byte[numOfBytes];        inFile.read(fileInBytes);
  • 27. WebServer.java      outToClient.writeBytes("HTTP/1.0 200 Document Followsrn");       if (fileName.endsWith(".jpg"))      outToClient.writeBytes("Content-Type: image/jpegrn");           if (fileName.endsWith(".gif"))      outToClient.writeBytes("Content-Type: image/gifrn");           outToClient.writeBytes("Content-Length: " + numOfBytes + "rn");          outToClient.writeBytes("rn"); outToClient.write(fileInBytes, 0, numOfBytes);      connectionSocket.close(); }     else System.out.println("Bad Request Message"); } }
  • 28. Concurrent server • Servers need to handle a new connection request while processing previous requests. – Most TCP servers are designed to be concurrent. • When a new connection request arrives at a server, the server accepts and invokes a new process to handle the new client.
  • 29. How to handle the port numbers cosmos% netstat –a –n –f inet Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 *.23 *.* LISTEN cosmos% netstat –a –n –f inet Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 192.249.24.2.23 192.249.24.31.1029 ESTABLISHED tcp 0 0 *.23 *.* LISTEN cosmos% netstat –a –n –f inet Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 192.249.24.2.23 192.249.24.31.1029 ESTABLISHED tcp 0 0 192.249.24.2.23 192.249.24.31.1030 ESTABLISHED tcp 0 0 *.23 *.* LISTEN
  • 30. Socket programming: references C-language tutorial (audio/slides): • “Unix Network Programming” (J. Kurose), http://manic.cs.umass.edu/~amldemo/courseware/intro.html Java-tutorials: • “All About Sockets” (Sun tutorial), http://www.javaworld.com/javaworld/jw-12-1996/jw-12- sockets.html • “Socket Programming in Java: a tutorial,” http://www.javaworld.com/javaworld/jw-12-1996/jw-12- sockets.html

Notas del editor

  1. TLI ( Transport Layer Interface )