练习:文件传输的功能
首先一个函数
int ftruncate(int fd,off_t length)
功能:将fd指定的文件大小改为参数length指定大小
注:fd必须是以写入的模式打开。
参数:fd 为已经打开文件的文件描述符
length 为文件指定大小
返回值:成功返回0,失败返回-1.
client 传文件给 server
typedef struct
{
int size;r buf[1024];
cha
}MSG;
客户端:
第一次 发送文件名,文件大小
MSG msg;
msg.size = file_size;
strcpy(msg.buf, "文件名");
send(sockfd,&msg,sizeof(MSG))
下一次 发送数据
msg.size = read(fd,msg.buf,sizeof(msg.buf));
send(sockfd,&msg,sizeof(MSG))
UDP收发数据函数
ssize_t recvfrom(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen)
功能:接收数据
参数:
sockfd 创建的套接字
buf 接收数据存放的地址
len 期望接收数据的大小
flags 0
src_addr 获得发送方的地址
addrlen 值结果参数(使用之前必须初始化,初始化的大小就是struct sockaddr 大小)
返回值:
成功返回接到到的字节数,失败返回-1
ssize_t sendto(int sockfd,void *buf,size_t len,int flags,const struct sockaddr *dest_addr,socklen_t addrlen )
功能:发送数据
参数:
sockfd 得到的套接字
buf 发送的数据存放的地址
len 期望发送数据的大小
flags 0
dest_addr 目标主机的地址
addrlen 地址的大小(sockaddr 结构体大小)
返回值:成功返回接收到的套接字,失败返回-1