Code:
int receivedBytesLen = clientSock.Receive(clientData);
and

Code:
clientSock.Send(clientData);
You can't be sure that the server receieves all of the data in one read, or the server sends it all in one write. You probably will want to include in your protocol the length of the file, say the first 4 bytes can say this. Then your server can read in a loop until it gets all these bytes. For the client you just need to make sure you get all the bytes wrote out to write. So do another loop until send has returned all the expected bytes that you are going to send.