I don't know of a good book for socket programming in .NET. The books I have seen tend to be super low level. They talk about the IP stack and other things that may be of interest, but are generally more basic than most people want to get.

As a general rule, you don't use sockets all that much in .NET. Instead, you either use the TCPClient/TCPListener, or the UDPClient, though not so many people use UDP anymore. If you want to do network programming, looking into TCP is more likely to get you something rather than looking for something on sockets.