Java Reference
In-Depth Information
CHAPTER 8
Sockets for Clients
Data is transmitted across the Internet in packets of finite size called datagrams . Each
datagram contains a header and a payload . The header contains the address and port to
which the packet is going, the address and port from which the packet came, a checksum
to detect data corruption, and various other housekeeping information used to ensure
reliable transmission. The payload contains the data itself. However, because datagrams
have a finite length, it's often necessary to split the data across multiple packets and
reassemble it at the destination. It's also possible that one or more packets may be lost
or corrupted in transit and need to be retransmitted or that packets arrive out of order
and need to be reordered. Keeping track of this—splitting the data into packets, gen‐
erating headers, parsing the headers of incoming packets, keeping track of what packets
have and haven't been received, and so on—is a lot of work and requires a lot of intricate
code.
Fortunately, you don't have to do the work yourself. Sockets allow the programmer to
treat a network connection as just another stream onto which bytes can be written and
from which bytes can be read. Sockets shield the programmer from low-level details of
the network, such as error detection, packet sizes, packet splitting, packet retransmis‐
sion, network addresses, and more.
Using Sockets
A socket is a connection between two hosts. It can perform seven basic operations:
• Connect to a remote machine
• Send data
• Receive data
• Close a connection
• Bind to a port
 
Search WWH ::




Custom Search