i have a nonblocking tcp/ip client, It tries to connect to a array of hosts one after other, if an error like conn_refused comes then socket is made to shutdown immediately and subsequent connect() will get EINVAL, (socket already shutdown). so, my questions are?

1. Is the behaviour what i am seeing is right?
2. If so, is there a reason why only once we can connect on tcp sockets and multiple on datagrams?
3. any reference toe RFC?
4. How can the socket marked as shutdown can be reused or creating a new socket is the only way?