As previously mentioned you should not use feof() to control that loop. Here is the correct way. You also have a problem by assuming that each read of the file will read exactly BufLen bytes. That may or may not be true. fread() will return the number of bytes read so you should only send that many bytes.
const int BufLen = 22610;
unsigned char RecvBuf[BufLen];
pFile = fopen ("info.txt" , "r");
unsigned int size = 0;
while( (size = fread (SendBuf , 1 ,sizeof(SendBuf) , pFile)) > 0)
{
sendto(SendSocket, SendBuf, size ,0, (SOCKADDR *) &RecvAddr,sizeof(RecvAddr));
}
fclose (pFile);