Thanks to Mike Wright <firstname.lastname@example.org> for some of the explanations.
Binding to a socket usually applies to a server which binds to a known or specified port. To bind to a port effectively means that the software is listening for connections on that port.
Clients are programs which often have "special features". They are the
user end of the client-server interface.
e.g. ftp is the client, ftpd is the server
A client could be something as simple as 'telnet', it depends whether the server requires a special type of connection such as from a reserved port number (less than 1024).
connectionless, unreliable messages of a fixed, typically small maximum length
socket which is created using socket(), bound to a port and will accept connections from clients
any data returned to the user still is treated as if it had not been read
out-of-band data is marked "urgent" and so has a higher priority than normal data
by default, sockets are blocking - this means that they stop the function from returning until all data has been transfered. With multiple connections which may or may not be transmitting data to a server, this would not be very good as connections may have to wait to transmit their data.
point to which a server can be bound and clients can connect, usually in the range 0-32767 but sometimes higher depending on the operating system. Ports less than 1024 are reserved and can only be bound by the super-user in UNIX (the same is not true in Winsock as there is, in my opinion, no real concept of users)
similar to a file descriptor, but linked to a socket instead of a file, can be used in low level commands such as read() and write()
allows multiple SOCK_STREAM sockets to be bound to the same local address, as long as all existing sockets at the desired address are in a connected state before the bind() is done on the new socket.
sequenced, reliable, two-way, connection-based byte streams
Back to the network programming tutorial by Simon Amor
16th September 2002 : Converted to be XHTML 1.0 Strict compliant and use CSS properly.
16th July 1996 : Original version