TCP/IP Sockets in Java: Practical Guide for Programmers - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

TCP/IP Sockets in Java: Practical Guide for Programmers

Description:

TCP/IP Sockets in Java: Practical Guide for Programmers Kenneth L. Calvert Michael J. Donahoo – PowerPoint PPT presentation

Number of Views:213
Avg rating:3.0/5.0
Slides: 28
Provided by: dona191
Category:

less

Transcript and Presenter's Notes

Title: TCP/IP Sockets in Java: Practical Guide for Programmers


1
TCP/IP Sockets in Java Practical Guide for
Programmers
  • Kenneth L. Calvert
  • Michael J. Donahoo

2
Computer Chat
  • How do we make computers talk?
  • How are they interconnected?
  • Internet Protocol (IP)

3
Internet Protocol (IP)
  • Datagram (packet) protocol
  • Best-effort service
  • Loss
  • Reordering
  • Duplication
  • Delay
  • Host-to-host delivery

4
IP Address
  • 32-bit identifier
  • Dotted-quad 192.118.56.25
  • www.mkp.com -gt 167.208.101.28
  • Identifies a host interface (not a host)

192.18.22.13
209.134.16.123
5
Transport Protocols
  • Best-effort not sufficient!
  • Add services on top of IP
  • User Datagram Protocol (UDP)
  • Data checksum
  • Best-effort
  • Transmission Control Protocol (TCP)
  • Data checksum
  • Reliable byte-stream delivery
  • Flow and congestion control

6
Ports
  • Identifying the ultimate destination
  • IP addresses identify hosts
  • Host has many applications
  • Ports (16-bit identifier)

Application WWW E-mail Telnet
Port 80 25 23
192.18.22.13
7
Sockets
  • Identified by protocol and local/remote
    address/port
  • Applications may refer to many sockets

8
Clients and Servers
  • Client Initiates the connection
  • Server Passively waits to respond

Server Jane
Client Bob
Hi, Bob. Im Jane
Hi. Im Bob. Nice to meet you, Jane.
9
TCP Client/Server Interaction
Server starts by getting ready to receive
client connections
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

10
TCP Client/Server Interaction
ServerSocket servSock new ServerSocket(servPo
rt)
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

11
TCP Client/Server Interaction
for () Socket clntSock
servSock.accept()
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

12
TCP Client/Server Interaction
Server is now blocked waiting for connection
from a client
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

13
TCP Client/Server Interaction
Later, a client decides to talk to the server
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

14
TCP Client/Server Interaction
Socket socket new Socket(server, servPort)
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

15
TCP Client/Server Interaction
OutputStream out socket.getOutputStream()
out.write(byteBuffer)
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

16
TCP Client/Server Interaction
Socket clntSock servSock.accept()
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

17
TCP Client/Server Interaction
InputStream in clntSock.getInputStream()
recvMsgSize in.read(byteBuffer)
  • Server
  • Create a TCP socket
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Communicate
  • Close the connection

18
TCP Client/Server Interaction
close(sock)
close(clntSocket)
  • Server
  • Create a TCP socket
  • Bind socket to a port
  • Set socket to listen
  • Repeatedly
  • Accept new connection
  • Communicate
  • Close the connection
  • Client
  • Create a TCP socket
  • Establish connection
  • Communicate
  • Close the connection

19
TCP Tidbits
  • Client knows server address and port
  • No correlation between send() and recv()
  • Client
  • out.write(Hello Bob)
  • in.read() -gt Hi Jane
  • Server
  • in.read() -gt Hello
  • in.read() -gt Bob
  • out.write(Hi )
  • out.write(Jane)

20
Closing a Connection
  • close() used to delimit communication
  • Analogous to EOF
  • Client
  • out.write(string)
  • while (not received entire string)
  • in.read(buffer)
  • out.write(buffer)
  • close(socket)
  • Server
  • in.read(buffer)
  • while(client has not closed connection)
  • out.write(buffer)
  • in.read(buffer)
  • close(client socket)

21
Constructing Messages
  • beyond simple strings

22
TCP/IP Byte Transport
  • TCP/IP protocols transports bytes
  • Application protocol provides semantics

Application
Application
byte stream
byte stream
Here are some bytes. I dont know what they mean.
Ill pass these to the app. It knows what to do.
TCP/IP
TCP/IP
23
Application Protocol
  • Encode information in bytes
  • Sender and receiver must agree on semantics
  • Data encoding
  • Primitive types strings, integers, and etc.
  • Composed types message with fields

24
Primitive Types
  • String
  • Character encoding ASCII, Unicode, UTF
  • Delimit length vs. termination character

M o m \n
3 77 111 109
25
Primitive Types
  • Integer
  • Strings of character encoded decimal digits
  • Advantage 1. Human readable
  • 2. Arbitrary size
  • Disadvantage 1. Inefficient
  • 2. Arithmetic manipulation

49 55 57 57 56 55 48 10
1 7 9 9 8 7 0 \n
26
Primitive Types
  • Integer
  • Native representation
  • Network byte order (Big-Endian)
  • Use for multi-byte, binary data exchange
  • htonl(), htons(), ntohl(), ntohs()

0 0 92 246
Little-Endian
4-byte twos-complement integer
23,798
246 92 0 0
Big-Endian
27
Message Composition
  • Message composed of fields
  • Fixed-length fields
  • Variable-length fields

integer short short
M i k e 1 2 \n
Write a Comment
User Comments (0)
About PowerShow.com