I think you meant protocol family.
You are of course quite right.
Apropos _DGRAM vs _STREAM: more to the point, unix(7) says that both are acceptable, albeit with a couple of protocol caveats... and I'd need to think hard about some of the things I've used it for. However in the current case I thing it's best to focus on the "dgram vs stream" rather than "connected vs unconnected" aspect, since if you're passing block data around (i.e. FDs) you really do need datagrams.
Edit: Forgot to thank you for your pipe code; thanks. 
You're welcome, I grabbed it in a hurry but forgot to check the dgram vs stream aspect... that might actually have all been streams since I was handling piped (etc.) data from a logic analyser to convert it into a standard format (and had checked the various channels fairly thoroughly).
MarkMLl