主页 > 人工智能  > 

网络编程——http

网络编程——http

        在Linux系统中使用C语言实现HTTP客户端或服务器通常涉及使用套接字编程和一些HTTP协议的基本知识。下面是一个简单的示例,展示了如何用C语言实现一个HTTP客户端,向一个HTTP服务器发送请求并接收响应。

1. HTTP客户端示例 (C语言)

        这个例子展示了如何用C语言通过TCP连接到HTTP服务器,发送HTTP请求并打印出响应。(示例为火狐新闻主页面)

代码示例:

#include "public.h" int init_tcp_cli(const char *ip, unsigned short port) { int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("fail socket"); return -1; } struct sockaddr_in seraddr; seraddr.sin_family = AF_INET; seraddr.sin_port = htons(port); seraddr.sin_addr.s_addr = inet_addr(ip); int ret = connect(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr)); if (ret < 0) { perror("fail connect"); return -1; } return sockfd; } int send_request(int sockfd) { char *pstr = "GET / HTTP/1.1\r\n" "Host: news.sohu \r\n" "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0\r\n" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n" "Accept-Language: en-US,en;q=0.5\r\n" "Connection: close\r\n\r\n"; ssize_t size = send(sockfd, pstr, strlen(pstr), 0); if (size < 0) { perror("fail send"); return -1; } return 0; } int recv_response(int sockfd) { char buff[1024] = {0}; while (1) { memset(buff, 0, sizeof(buff)); ssize_t size = recv(sockfd, buff, sizeof(buff), 0); if (size < 0) { perror("fail recv"); return -1; } if (0 == size) { break; } write(1, buff, size); } } int main(int argc, const char *argv[]) { int sockfd = init_tcp_cli("118.183.253.55", 80); if (sockfd < 0) { return -1; } send_request(sockfd); recv_response(sockfd); close(sockfd); return 0; }

2. 代码解释:

1.建立连接

        使用init_tcp_cli函数创建与服务器的链接; 2. 发送请求:

        使用send()函数将构造好的HTTP请求发送到服务器。

3. 接收响应:

        使用recv()函数接收服务器的HTTP响应。         输出响应的内容。

4. 关闭连接:

        使用close()函数关闭套接字,释放资源。

标签:

网络编程——http由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“网络编程——http