网络编程练习题

news/2025/1/14 17:59:59/文章来源:https://www.cnblogs.com/lu-ciana/p/18242697

网络编程

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.hqwc.cn/news/723258.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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安装包,选上中文包,再试,可以运行了,就是中文基本识别不了,也不知哪里改善,只得作罢。…

fastjson1

@目录前言分析复制文件清空文件出现问题和分析问题解决分析问题再次出现问题再次分析最终结果读取文件分析poc拓宽场景极限环境poc优化修改再次优化poc的分析写入文件SafeFileOutputStream写文件java8无依赖读文件在commons-io库下的写入文件原因利用链分析组合poc出现问题和分…

解决运行loadRunner报错无法进行代理的错误

选择第二个,不设置代理,可以实现回放不会报错,但是今日运行遇到错误,无法实现全部的录制脚本回访完毕,卡住打开网址处的脚本。直接运行完毕,不会报错。

LiteDb

目录封装的代码相关参考本文记录LiteDb的使用,建议初学者使用时先根据官方的文档进行学习。LiteDb官网LiteDb DocLiteDb Package LiteDb API 封装的代码LiteDbWrapper.cs/// <summary>/// 官网:http://www.litedb.org//// GitHub:https://github.com/mbdavid?tab=repo…

winform窗体关闭之前弹出确认框

需要使用到窗体的 FormClosing 事件 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) {DialogResult dialogResult = MessageBox.Show("是否确认关闭窗口", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if (…