当前位置: 首页 > wzjs >正文

江西网站开发公司电话网站检测

江西网站开发公司电话,网站检测,用ps制作黑色高光网站按钮,珠海网站建设培训学校HTTP 通信例程 HTTP 是一种明文传输协议&#xff0c;在 C 语言中可以使用 socket 编程来实现简单的 HTTP 请求。以下是一个示例代码&#xff0c;用于向指定的 HTTP 服务器发送 GET 请求并接收响应&#xff1a; #include <stdio.h> #include <stdlib.h> #include …

HTTP 通信例程

HTTP 是一种明文传输协议,在 C 语言中可以使用 socket 编程来实现简单的 HTTP 请求。以下是一个示例代码,用于向指定的 HTTP 服务器发送 GET 请求并接收响应:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>#define BUFFER_SIZE 1024int main() {int sockfd;struct sockaddr_in server_addr;char buffer[BUFFER_SIZE];char request[BUFFER_SIZE];// 创建套接字sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd == -1) {perror("socket creation failed");return -1;}// 设置服务器地址server_addr.sin_family = AF_INET;server_addr.sin_port = htons(80); // HTTP 默认端口if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) {perror("invalid address or address not supported");return -1;}// 连接到服务器if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {perror("connection failed");return -1;}// 构建 HTTP 请求snprintf(request, sizeof(request), "GET / HTTP/1.1\r\n""Host: 127.0.0.1\r\n""Connection: close\r\n\r\n");// 发送请求if (send(sockfd, request, strlen(request), 0) == -1) {perror("send failed");return -1;}// 接收响应ssize_t bytes_received;while ((bytes_received = recv(sockfd, buffer, sizeof(buffer) - 1, 0)) > 0) {buffer[bytes_received] = '\0';printf("%s", buffer);}// 关闭套接字close(sockfd);return 0;
}

代码说明

  1. 创建套接字:使用 socket 函数创建一个 TCP 套接字。
  2. 设置服务器地址:设置服务器的 IP 地址和端口号。
  3. 连接到服务器:使用 connect 函数连接到服务器。
  4. 构建 HTTP 请求:构建一个简单的 HTTP GET 请求。
  5. 发送请求:使用 send 函数发送请求。
  6. 接收响应:使用 recv 函数接收服务器的响应。
  7. 关闭套接字:使用 close 函数关闭套接字。

HTTPS 通信例程

HTTPS 是基于 HTTP 的安全传输协议,需要使用 SSL/TLS 进行加密。在 C 语言中可以使用 OpenSSL 库来实现 HTTPS 通信。以下是一个示例代码,用于向指定的 HTTPS 服务器发送 GET 请求并接收响应:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <openssl/ssl.h>
#include <openssl/err.h>#define BUFFER_SIZE 1024void init_openssl() {SSL_load_error_strings();OpenSSL_add_ssl_algorithms();
}void cleanup_openssl() {EVP_cleanup();ERR_free_strings();
}SSL_CTX *create_context() {const SSL_METHOD *method;SSL_CTX *ctx;method = SSLv23_client_method();ctx = SSL_CTX_new(method);if (!ctx) {perror("Unable to create SSL context");ERR_print_errors_fp(stderr);return NULL;}return ctx;
}void configure_context(SSL_CTX *ctx) {SSL_CTX_set_ecdh_auto(ctx, 1);// 验证服务器证书SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);if (SSL_CTX_load_verify_locations(ctx, NULL, "/etc/ssl/certs") != 1) {ERR_print_errors_fp(stderr);}
}int main() {int sockfd;struct sockaddr_in server_addr;char buffer[BUFFER_SIZE];char request[BUFFER_SIZE];SSL_CTX *ctx;SSL *ssl;// 初始化 OpenSSLinit_openssl();// 创建 SSL 上下文ctx = create_context();if (!ctx) {cleanup_openssl();return -1;}// 配置 SSL 上下文configure_context(ctx);// 创建套接字sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd == -1) {perror("socket creation failed");SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 设置服务器地址server_addr.sin_family = AF_INET;server_addr.sin_port = htons(443); // HTTPS 默认端口if (inet_pton(AF_INET, "www.example.com", &server_addr.sin_addr) <= 0) {perror("invalid address or address not supported");close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 连接到服务器if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {perror("connection failed");close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 创建 SSL 连接ssl = SSL_new(ctx);if (!ssl) {perror("unable to create SSL connection");close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 将 SSL 连接与套接字关联if (SSL_set_fd(ssl, sockfd) != 1) {perror("unable to set SSL fd");SSL_free(ssl);close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 执行 SSL 握手if (SSL_connect(ssl) != 1) {ERR_print_errors_fp(stderr);SSL_free(ssl);close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 构建 HTTP 请求snprintf(request, sizeof(request), "GET / HTTP/1.1\r\n""Host: www.example.com\r\n""Connection: close\r\n\r\n");// 发送请求if (SSL_write(ssl, request, strlen(request)) <= 0) {ERR_print_errors_fp(stderr);SSL_free(ssl);close(sockfd);SSL_CTX_free(ctx);cleanup_openssl();return -1;}// 接收响应ssize_t bytes_received;while ((bytes_received = SSL_read(ssl, buffer, sizeof(buffer) - 1)) > 0) {buffer[bytes_received] = '\0';printf("%s", buffer);}// 关闭 SSL 连接SSL_shutdown(ssl);SSL_free(ssl);// 关闭套接字close(sockfd);// 清理 OpenSSLSSL_CTX_free(ctx);cleanup_openssl();return 0;
}

代码说明

  1. 初始化 OpenSSL:调用 init_openssl 函数初始化 OpenSSL 库。
  2. 创建 SSL 上下文:调用 create_context 函数创建 SSL 上下文。
  3. 配置 SSL 上下文:调用 configure_context 函数配置 SSL 上下文,包括验证服务器证书。
  4. 创建套接字:使用 socket 函数创建一个 TCP 套接字。
  5. 设置服务器地址:设置服务器的 IP 地址和端口号。
  6. 连接到服务器:使用 connect 函数连接到服务器。
  7. 创建 SSL 连接:使用 SSL_new 函数创建 SSL 连接,并使用 SSL_set_fd 函数将 SSL 连接与套接字关联。
  8. 执行 SSL 握手:使用 SSL_connect 函数执行 SSL 握手。
  9. 构建 HTTP 请求:构建一个简单的 HTTP GET 请求。
  10. 发送请求:使用 SSL_write 函数发送请求。
  11. 接收响应:使用 SSL_read 函数接收服务器的响应。
  12. 关闭 SSL 连接:使用 SSL_shutdown 和 SSL_free 函数关闭 SSL 连接。
  13. 关闭套接字:使用 close 函数关闭套接字。
  14. 清理 OpenSSL:调用 cleanup_openssl 函数清理 OpenSSL 库。

编译和运行

HTTP 例程
gcc http_example.c -o http_example
./http_example
HTTPS 例程
gcc https_example.c -o https_example -lssl -lcrypto
./https_example

以上代码仅是简单示例,实际应用中可能需要更多的错误处理和安全性检查。

http://www.dtcms.com/wzjs/24299.html

相关文章:

  • 做推广必须知道的网站吗搜索优化
  • 做官方网站公司怎么做品牌推广和宣传
  • 网络代理设置关闭是什么意思惠东seo公司
  • phpweb成品网站模板焦作关键词优化排名
  • 企业网站建设毕业论文网站服务器多少钱一年
  • 音乐网站建设方案书模板磁力搜索引擎哪个好
  • 广州网站建设 知名龙岗网站建设公司
  • 设计网站思路如何写百度地图在线使用
  • 甘肃省建设厅官方网站造价总站2021友情链接qq群
  • 智慧工厂管理系统石家庄百度关键词优化
  • 网站换服务器怎么做备份重庆网站推广软件
  • 广州招聘网站制作广告宣传方式有哪些
  • 做网站添加支付功能要多少钱广告联盟全自动赚钱系统
  • 做移动网站优化优凡科建站怎么导出网页
  • 怎样做才能提升自己的网站站长之家ip查询
  • 宁夏电力建设工程公司门户网站潮州网站建设
  • 网站开发简历项目经验象山关键词seo排名
  • 网站建设企业策划书百度搜索广告价格
  • 海南网站建设公司哪家靠谱上海网站推广优化
  • sdk广告平台seo搜索引擎优化期末及答案
  • 营销网站主题有哪些内容如何在百度上发布自己的文章
  • 深圳排名网站网址大全2345
  • 俄语搜索网站搜索引擎优化的主要内容
  • 让别人做网站多久开始注册域名互动营销的方式有哪些
  • 贵州省住房和城乡建设部网站抖音优化排名
  • wordpress 小工具使用方法seo店铺描述
  • 用摄像头直播网站怎么做友情链接查询工具
  • 新网站建设免费的行情网站app软件
  • 宝塔自助建站系统源码苏州旺道seo
  • 交流平台网站怎么做不了北京企业网站推广哪家公司好