假设client套接字已经连接到了一个HTTP服务器,分别读取HTTP协议中每行数据的C语言代码实现
时间: 2023-12-03 17:44:30 浏览: 25
以下是一个简单的C语言代码示例,可以读取HTTP协议中每行数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BUFFER_SIZE 1024
int main(int argc, char *argv[]) {
int sockfd, n;
char buffer[BUFFER_SIZE];
struct sockaddr_in serv_addr;
// 创建套接字
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("ERROR: failed to create socket");
exit(1);
}
// 设置服务器地址
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
serv_addr.sin_port = htons(atoi(argv[2]));
// 连接到服务器
if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
perror("ERROR: failed to connect to server");
exit(1);
}
// 发送HTTP请求
char *request = "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n";
write(sockfd, request, strlen(request));
// 读取HTTP响应
while ((n = read(sockfd, buffer, BUFFER_SIZE - 1)) > 0) {
buffer[n] = '\0';
printf("%s", buffer);
}
// 关闭套接字
close(sockfd);
return 0;
}
```
以上代码连接到HTTP服务器并发送了一个简单的GET请求,然后读取HTTP响应并将其打印到控制台。在读取HTTP响应时,每个行字符串都被存储在缓冲区中,并在控制台上输出。