I have an application which communicates with another application using sockets with the send()
and recv()
functions. The connection is blocking - the application doesn't set the O_NONBLOCK
flag. Moreover, send()
doesn't use the MSG_DONTWAIT
flag.
The communication works fine, but after some time send
blocks. It means that there is no more space in the kernel buffer. Could you explain why/when this happens? Does calling the recv()
function free the space in the kernel? Maybe one application reads the data slower than the other application is sending it?