What is Socket Programming ?
Beginners Guide to Sockets
What is Socket Programming ?
Sockets are a generalized networking capability first introduced in
4.1cBSD and subsequently refined into their current form with 4.2BSD.
The sockets feature is available with most current UNIX system
releases. (Transport Layer Interface (TLI) is the System V
alternative). Sockets allow communication between two different
processes on the same or different machines. Internet protocols are
used by default for communication between machines; other protocols
such as DECnet can be used if they are available.
To a programmer a socket looks and behaves much like a low level file
descriptor. This is because commands such as read() and write() work
with sockets in the same way they do with files and pipes. The
differences between sockets and normal file descriptors occurs in the
creation of a socket and through a variety of special operations to
control a socket. These operations are different between sockets and
normal file descriptors because of the additional complexity in
establishing network connections when compared with normal disk access.
For most operations using sockets, the roles of client and server must
be assigned. A server is a process which does some function on request
from a client. As will be seen in this discussion, the roles are not
symmetric and cannot be reversed without some effort.
This description of the use of sockets progresses in three stages:
The use of sockets in a connectionless or datagram mode between client
and server processes on the same host. In this situation, the client
does not explicitly establish a connection with the server. The client,
of course, must know the server's address. The server, in turn, simply
waits for a message to show up. The client's address is one of the
parameters of the message receive request and is used by the server for
response.
The use of sockets in a connected mode between client and server on the
same host. In this case, the roles of client and server are further
reinforced by the way in which the socket is established and used. This
model is often referred to as a connection-oriented client-server model.
The use of sockets in a connected mode between client and server on
different hosts. This is the network extension of Stage 2, above.
The connectionless or datagram mode between client and server on
different hosts is not explicitly discussed here. Its use can be
inferred from the presentations made in Stages 1 and 3.
(Continued on next question...)
Other Interview Questions
|