Suppose I have a server application - the connection is over TCP, using UNIX sockets.
The connection is asynchronous - in other words, clients' and servers' sockets are non-blocking.
Suppose the following situation: in some conditions, the server may decide to send some data to a connected client and immediately close the connection: using shutdown
with SHUT_RDWR
.
So, my question is - is it guaranteed, that when the client call recv
, it will receive the (sent by the server) data?
Or, to receive the data, recv
must be called before the server's shutdown
? If so, what should I do (or, to be more precise, how should I do this), to make sure, that the data is received by the client?