网络编程练习题

news/2024/10/12 4:27:50

网络编程

image

代码

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>#include "cJSON.h"
/***************************************************************************************  file name:  1.c*  author   : 	lu.ciana.598393@gmail.com*  date     :  2024/06/11*  function : 	利用某些平台(聚合API、百度AI、科大讯飞API)的API接口,利用HTTP协议向服务器发送*				请求,并接受服务器的响应,要求利用cJSON库对服务器的响应数据进行解析,并输出到终端。*  note     :  None*  CopyRight (c)   2024    lu.ciana.598393@gmail.com   All Right Reserved*************************************************************************************/#define  PORT  	80
#define  IPADDR "203.107.54.210"
#define	 DATA   "2024-6-11"
#define  KEY    "xxxxxxxxxxx"  //自己的私钥
// #define  LOCAL  "beijing"int main(int argc, char const *argv[])
{//1.创建TCP套接字int tcp_socket = socket(AF_INET, SOCK_STREAM, 0);if (tcp_socket == -1){fprintf(stderr, "tcp socket error,errno:%d,%s\n",errno,strerror(errno));exit(1);}//4.发起连接请求,等待接受服务器接受连接struct sockaddr_in  dest_addr;dest_addr.sin_family 		= AF_INET; 						//协议族,是固定的dest_addr.sin_port   		= htons(PORT);					//服务器端口,必须转换为网络字节序dest_addr.sin_addr.s_addr   = inet_addr(IPADDR);			//服务器地址   int ret = connect(tcp_socket,(struct sockaddr *)&dest_addr,sizeof(dest_addr));if (ret < 0){fprintf(stderr, "connect error,errno:%d,%s\n",errno,strerror(errno));exit(1);}//用于存储HTTP的请求内容: 请求行 + 请求字段 + \r\n + 请求包体(可选)  char reqbuf[1024] = {0};sprintf(reqbuf,"GET http://v.juhe.cn/calendar/day?key=%s&date=%s ""HTTP/1.1""\r\n""Host:v.juhe.cn\r\n""\r\n",KEY,DATA);//5.说明双方建立连接,此时可以利用HTTP协议发送请求信息,并等待服务器的响应  基于请求/响应send(tcp_socket,reqbuf,strlen(reqbuf),0);//6.等待服务器的响应char recvbuf[1024] = {0};//返回的响应参数和响应包体recv(tcp_socket,recvbuf,sizeof(recvbuf),0);  //定义堆空间接收包体数据char *recv_buf=calloc(1,512);//将包体数据从响应数据中分离出来recv_buf = strstr(recvbuf,"{");//进行JSON解析//1) 先把获取的字符串转换为JSON格式cJSON * obj = cJSON_Parse(recv_buf);//2) 把解析之后的JSON格式进行输出,用于调试printf("%s\n",cJSON_Print(obj));return 0;
}

结果

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/42499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

11-CSS定位

CSS定位01 CSS定位概念理解 01 标准流布局概念的理解02 position属性02 相对定位 依然在标准流中 应用场景: 在不影响其它元素的情况下,对当前元素进行微调 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><met…

Combining Recurrent, Convolutional, and Continuous-time Models with Linear State-Space Layers

目录概符号说明LSSL和其它方法的联系代码Gu A., Johnson I., Goel K., Saab K., Dao T., Rudra A., and Re C. Combining recurrent, convolutional, and continuous-time models with linear state-space layers. NeurIPS, 2021.State space representaion-wiki.概 Mamba 系列…

堆基础知识

arenachunk通俗地说,一块由分配器分配的内存块叫做一个 chunk,包含了元数据和用户数据。具体一点,chunk 完整定义如下: struct malloc_chunk {INTERNAL_SIZE_T mchunk_prev_size; /* Size of previous chunk (if free). */INTERNAL_SIZE_T mchunk_size; …

【Azure Spring Apps】Spring App部署上云遇见 502 Bad Gateway nginx

问题描述 在部署Azure Spring App应用后,访问应用,遇见了502 Bad Gateway Nginx。问题解答 502 Bad Gateway, 并且由Nginx返回。而自己的应用中,并没有定义Nginx相关内容,所以需要查看问题是否出现在Azure Spring App服务的设置上。 根据Spring App的通信模型图判断,502的…

学生管理系统的CRUD

include using namespace std; typedef struct Studnet { //初始化结构体变量 int ID; double math_scores; double english_scores; double computer_scores; double total_scores;}Student; void Input_student_score(int size, Student* stu); //输入所有学生信息 void Out…

C语言中关于Base64编码的基础原理

Base64编码简述: 1.Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 2.Base64,就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集,(任何符号都可以转…

09-盒子模型

盒子模型01 认识盒子模型02 盒子模型的四边03 盒子边框04 盒子内边距-padding 通常用于设置边框和内容之间的间距 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible&quo…

试了下ocr

pdf能看了,拓展的驱动下,想着是否可以ORC呢,识别到文字内容更有帮助。 按网搜的顺序,开始是用pytesseract,pip安装顺利,但运行不了,提示找不到pytesseract,按网上的帮助下载win安装包,选上中文包,再试,可以运行了,就是中文基本识别不了,也不知哪里改善,只得作罢。…