System.Net.Sockets namespace classes implement standard
Berkeley sockets APIs for cross-process/cross-host communication. Sockets are
low-level objects (abstractions, really) that provide the foundation for most Internet
networking. A socket binds to a local address and port, and either waits for
a connection from a remote address or connects to
a remote address and exchanges data across the network. Two socket implementations
are made available in this namespace, TCP/IP and UDP/IP. Most Internet applications,
such as FTP clients and web browsers, are built upon socket connections.
Although many system-level programmers feel a close kinship with these types,
C# programmers are greatly encouraged to consider using higher-level constructs,
such as HTTP (see the
System.Net namespace) or the
System.Runtime.Remoting types, to facilitate remote
If you need to work at the socket level, consider using
TcpListener. These are high-level abstractions of the socket API that support
client and server functionality.
For more details regarding many of the options mentioned in this namespace, consult a low-level sockets reference, such as W. Richard Stevens’ “Network Programming in the Unix Environment” (Volumes 1 and 2) or “TCP/IP Illustrated” (Volumes 1, 2, and 3). Although the books were written for a Unix environment, .NET faithfully mirrors much, if not all, of the Berkeley sockets API (which originally came from Unix). Figure ...