As has been previously posted, you can indeed create a pool of sockets with some number limit. However, I don't know how this would be useful. The whole point of a socket is that it is either connected to something, or is waiting for connections from something. I suppose you could have a bunch of sockets all connected to the same address/port, and pass them around, but unless your layer7 stuff is stateless, this would be difficult to use. As for 'sharing' sockets between processes, it kind of defeats the purpose. sockets are one of the prime methods of "inter-process communication". In *nix, each socket has an entry in the process file table. You can't move these from process to process. You can keep them via a fork, but then you are back to state issues.
Maybe a little more context, and/or a code sample, would help?