I am using c to send data to a socket with the following commands:
socket = socket(AF_INET, SOCK_STREAM, ptrp->p_proto);
ioctl(socket, FIONBIO, (char *)&on);
connect(socket)
send(socket,data)
shutdown(socket, SHUT_WR);
recv(socket) //ready last of data waiting on the port
//note this is the same port and address as the connection above
socket = socket(AF_INET, SOCK_STREAM, ptrp->p_proto);
ioctl(socket, FIONBIO, (char *)&on);
connect(socket)
send(socket,data)
shutdown(socket, SHUT_WR);
recv(socket) //read last of data waiting on the port
The other end of the connection takes approximately half a second to process all of this information, but my application finishes immediately.
The problem is that some of the data at the end of the first send is truncated though all of the data from the second send statement makes it to the other end, but if I add a 1 second sleep to the end of my application all of the data makes it successfully.
Why is this happening?
Brandon