C语言怎么通过tcp接收文件
时间: 2024-05-07 16:15:27 浏览: 8
在C语言中,可以使用socket库来通过TCP协议接收文件。以下是简单的代码示例:
1. 创建socket
```c
int sockfd;
struct sockaddr_in server_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
perror("socket");
exit(1);
}
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = INADDR_ANY;
```
2. 连接服务器
```c
if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
perror("connect");
exit(1);
}
```
3. 接收文件
```c
FILE *fp = fopen("filename", "wb");
char buffer[1024];
int n;
while ((n = recv(sockfd, buffer, sizeof(buffer), 0)) > 0) {
fwrite(buffer, sizeof(char), n, fp);
}
fclose(fp);
```
以上代码将从TCP连接中接收数据,并将其写入名为“filename”的文件中。需要注意的是,此代码仅适用于接收较小的文件,对于大文件,应使用分块传输和循环接收的方式。