Аргумент send
должен указывать на буфер памяти, заполненный значениями (байтами), которые вы хотите отправить.Вы можете трактовать аргумент const void *buf
функции send () как const char *buf
- это просто массив символов, который не будет изменен функцией send ().
Но, fopen()
возвращает вамFILE*
- это указатель на специальную структуру FILE
.Итак, если вы хотите отправить содержимое файла, вы должны прочитать содержимое в буфер tmp
, используя функцию fread()
и указатель FILE*
, а затем передать буфер tmp
в функцию send()
.Повторяйте этот код с помощью fread()
& send()
, пока не достигнете конца файла.
Пример кода (находится по адресу http://developerweb.net/viewtopic.php?pid=28854)
int file2socket (FILE *fp, int sockfd)
{
char tmp[8*1024];
int len;
int ret;
for (ret = 0;;) {
len = fread (tmp, 1, sizeof (tmp), fp);
if (len == 0) {
ret = feof (fp);
break;
}
if (!send (sockfd, tmp, len, 0)) break;
}
return (ret);
}