A network socket can either be blocking or nonblocking. Functions of blocking (or synchronous) sockets cannot return a value until the entire operation is complete. They are "blocked" from doing so. The disadvantage of using the blocking mode is that an operation can take a very long time to execute (for example, the receive function of a socket object.) Nonblocking functions return immediately.
Source: MS Developer's Network