在C语言中,向服务器发送请求通常涉及使用套接字编程,以下是详细的步骤和示例代码,展示如何在C语言中创建一个客户端程序,向服务器发送HTTP请求并接收响应。
需要创建一个套接字,套接字是网络通信的基本构建块。
#include <stdio.h> // for printf(), perror() #include <stdlib.h> // for exit() #include <string.h> // for memset() #include <sys/socket.h> // for socket(), connect() #include <netinet/in.h> // for sockaddr_in #include <arpa/inet.h> // for inet_pton() int main() { int sockfd; struct sockaddr_in server_addr; // 创建套接字 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // 设置服务器地址结构体 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(80); // HTTP端口号通常是80 // 将IP地址从文本转换为二进制形式 if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) { perror("Invalid address / Address not supported"); exit(EXIT_FAILURE); } // 连接到服务器 if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("Connection Failed"); exit(EXIT_FAILURE); } printf("Connected to the server successfully. "); return 0; }
一旦套接字连接建立,就可以通过该套接字发送HTTP请求。
char *request = "GET / HTTP/1.1 Host: 127.0.0.1 Connection: close "; send(sockfd, request, strlen(request), 0);
发送请求后,接下来就是接收服务器的响应。
char buffer[1024]; int bytes_received; while ((bytes_received = recv(sockfd, buffer, sizeof(buffer) 1, 0)) > 0) { buffer[bytes_received] = '