send必须指向内存缓冲区的参数,填充了要发送的值(字节).您可以将const void *bufsend()的参数视为const char *buf- 它只是chars数组,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);
}
Run Code Online (Sandbox Code Playgroud)