Windows Sockets: Ports and Socket Addresses


This article explains the terms "port" and "address" as used with Windows Sockets.

A port identifies a unique process for which a service can be provided. In the present context, a port is associated with an application that supports Windows Sockets. The idea is to identify each Windows Sockets application uniquely so you can have more than one Windows Sockets application running on a machine at the same time.

Certain ports are reserved for common services, such as FTP. You should avoid using those ports unless you are providing that kind of service. The Windows Sockets specification details these reserved ports. The file WINSOCK.H also lists them.

To let the Windows Sockets DLL select a usable port for you, pass 0 as the port value. MFC selects a port value greater than 1,024 decimal. You can retrieve the port value that MFC selected by calling the CAsyncSocket::GetSockName member function.

Each socket object is associated with an Internet Protocol (IP) address on the network. Typically, the address is a machine name, such as "", or a dotted number, such as "".

When you seek to create a socket, you typically do not need to specify your own address.


It is possible that your machine has multiple network cards (or your application might someday run on such a machine), each representing a different network. If so, you might need to give an address to specify which network card the socket will use. This is certain to be an advanced usage and a possible portability issue.

For more information, see: