1. SOCKET PROGRAMMING IN JAVA
Narendran Thangarajan,
@naren_live,
II Year, BE, CSE,
SSN College of Engg, Chennai.
2. What started it all..
Internet has emerged as a global ubiquitous
media for communication
It has changed the way we live, learn, enjoy,
communicate, interact, engage, etc.
To take advantage of this, businesses are
ceaselessly trying to offer their services through
the internet.
So a huge demand for software developers good
in creating internet-enabled applications.
3. Client Server Applications
The Web Service is provided by the server
and the clients use these services
Client
Server
Network
Client machine
Server machine
A client, where sockets and network
This is
A server, come in !!
4. Sockets
Introduced in BSD 4.1 UNIX 1981.
Sockets are the endpoints of any
communication over the internet.
Sockets are identified by socket addresses.
Socket Address = IP Address + Port Number
5. Why IP Address + Port number?
• IP Address is of the form 10.0.0.1
• Port Number can be anything from 0 to 65,535.
7. Destination Socket = 10.0.0.2 : 80
IP Address -> MAC Address – Locate the
specific system
10.0.0.1
10.0.0.2
8. Port Number – Process specific
Port 10000
Port 11000
Port 120000
9. Understanding Ports
OutLook AVG
Gmail YM
Express Update
Port 1 Port 2 Port 3 Port 4
Transport Layer
Packet
Port num data
Network layer
10. Thus virtually, sockets are a connection
between the two processes in different
systems.
Eg : Let the socket pairs be
10.0.0.1 : 80 and 20.0.0.1 : 2000
192.168.21.10 : 3000 and 192.168.100.1 : 6000
11. Networking Basics – the larger picture
Applications Layer
Standard apps
HTTP TCP STACK
FTP
Telnet Application
User apps (http,ftp,telnet,…)
Transport Layer Transport
TCP (TCP, UDP,..)
UDP
Network
Network Layer (IP,..)
IP
Link Layer Link
(device driver,..)
Device drivers
12. Network Basics - Where are these sockets?
Applications Layer
Standard apps
HTTP TCP STACK
FTP
Telnet Application
User apps (http,ftp,telnet,…)
Programming Interface: Sockets
SOCKETS
Transport
Transport Layer (TCP, UDP,..)
TCP
UDP Network
(IP,..)
Network Layer Link
IP
Link Layer
(device driver,..)
Device drivers
14. Socket Programming with TCP
Server starts first..
Server Process must be running first
Server must have created a socket which welcomes
client’s connection. (Welcoming socket)
Client contacts server by..
Creating Client local TCP socket
Specify IP Address and port number of server process.
When Client socket is created, the connection is
established.
When connection is established, server creates a new
socket (Connection Socket) to communicate with that
client and the Welcoming socket is once again waiting
for connections for other clients.
15. Client/Server Socket Interaction in
TCP
Server
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket() Client
wait for incoming
TCP create socket,
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
connectionSocket
close
connectionSocket close
clientSocket
16. Step 1 :
Connection request
port
Server
Client
Step 2 :
port
Server
port
Client
port Connection
17. Types of Sockets in TCP
ServerSocket – the socket used by servers
Socket – Socket used by clients
Create a ServerSocket in the server and make
it to wait for connections from Sockets from
other clients
18. The concept of Streams
Client output Server input
stream stream
Client Server
socket socket
Client input Server output
stream stream
19. Socket Programming with UDP
No Connection between client and server.
No handshaking
The sender has to explicitly mention the IP
address and the port of the destination.
The server should extract the IP Address of the
datagram everytime.
Uses DatagramSocket.
20. Client/server socket interaction:
UDP
Server Client
create socket, create socket,
port=x, for clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x),
send datagram request
using clientSocket
read request from
serverSocket
write reply to
serverSocket
read reply from
specifying client
clientSocket
host address,
port number close
clientSocket
22. Conclusion
Socket Programming is very easy in Java.
Usually each and every socket is handled by a
separate thread in real-time client/server
environments.