Yeelink平台查询开关量——套接字编程 Windows平台
int main(int argc, char **argv)
{WSADATA wsaData;int result_id;int socket_id;// HTTP请求char send_buf[] ="GET /v1.0/device/1949/sensor/2511/datapoints HTTP/1.1\r\n""U-ApiKey: [your apikey]\r\n""Host: api.yeelink.net\r\n\r\n";// HTTP响应char receive_buf[1024];struct hostent *yeelink_host; // yeelink主机DNS解析结构体char *host_name = "api.yeelink.net"; // yeelink域名struct in_addr yeelink_ipaddr; // yeelink IP地址struct sockaddr_in yeelink_sockaddr; // yeelink 连接套接字// Winsows下启用socketresult_id = WSAStartup(MAKEWORD(2, 2), &wsaData);if (result_id != 0) {printf("WSAStartup failed: %d\n", result_id);return 1;}// 第一步 DNS地址解析printf("calling gethostbyname with: %s\r\n", host_name);yeelink_host = gethostbyname(host_name);if (yeelink_host == NULL){// DNS解析失败printf("error\r\n");}else{// DNS解析正确yeelink_ipaddr.s_addr = *(u_long *) yeelink_host->h_addr_list[0];printf("Yeelink IP Address %s\r\n" , inet_ntoa(yeelink_ipaddr));}// 第二步 创建套接字socket_id = socket(AF_INET, SOCK_STREAM, 0);yeelink_sockaddr.sin_family = AF_INET;yeelink_sockaddr.sin_port = htons(80); // 设置端口号yeelink_sockaddr.sin_addr = yeelink_ipaddr; // 设置IP地址memset(&(yeelink_sockaddr.sin_zero), 0, sizeof(yeelink_sockaddr.sin_zero));// 第三步 连接yeelinkresult_id = connect( socket_id, (struct sockaddr *)&yeelink_sockaddr, sizeof(struct sockaddr));if( result_id == SOCKET_ERROR ){printf("connect ok\r\n");}printf("Http request:\r\n%s\r\n",send_buf);// 第四步 发送HTTP请求send(socket_id , send_buf,strlen(send_buf), 0);// 第五步 接收HTTP响应int bytes_received = 0;bytes_received = recv( socket_id , receive_buf , 1024 , 0);receive_buf[ bytes_received ] = '\0';printf("Receive Message:\r\n%s\r\n",receive_buf );closesocket(socket_id); // 关闭套接字WSACleanup(); // windows下释放套接字getchar(); // 保持控制台窗口return 0;
}
Yeelink平台查询开关量——套接字编程 Windows平台相关推荐
- Yeelink平台推送传感器结果——套接字编程 Windows平台
1.前言 本文使用windows平台的socket套接字实现向yeelink平台推送传感器结果. [相关博文] [ MinGW安装和使用总结 ] [Yeelink Ht ...
- Windows平台的原始套接字编程的知识点概要(备忘)
其实从大学学习了C语言后,翻看整本教材只有C语言的语法,根本没有网络编程相关的任何内容,现在回想起来,都记不起自己何时在哪本书上学习了套接字编程,说起TCP.UDP,能知道他们的区别,相关的编程的&q ...
- 套接字编程(VC_Win32)
简介(源于维基) Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BSD Unix操作系统(于1983发布)的一套应用程序接口.然而,由于AT&T的专利保护着UNIX,所以 ...
- IPv6套接字编程介绍
IPv6套接字编程 1.概述 由于互联网用户的日益增加,网络需求日益扩大,IPv4地址也日益紧张.人们为了解决地址日趋耗尽的问题,采用了CIDR.NAT等技术来延缓地址耗尽的速度,但这并不能从根本上解 ...
- 【Linux网络编程】UDP 套接字编程
[Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...
- MFC—windows套接字编程
Windows 套接字编程 一.常见概念 1.Windows Sockets 规范 Windows Sockets 规范是 Windows 平台下定义的可以兼容二进制数据传输的网络编程接口,是基于伯克 ...
- 【C++】Winsock套接字编程,struct sockaddr、sockaddr_in,主机网络字节序
前一篇关于windows平台下winsock套接字编程的相关api struct sockaddr与struct sockaddr_in 在bind函数,connect函数里提到了套接字编程网络地址信 ...
- WindowsSockets套接字编程学习-C语言
Windows操作系统环境下的套接字编程主要步骤如下: 初始化WinSock的DLL动态链接库,使用WSAStartup函数. 创建套接字,进行地址.端口.协议等的绑定,涉及socket.bind函数 ...
- python套接字编程_Python套接字编程(1)——socket模块与套接字编程
在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...
最新文章
- git fetch与git pull的区别
- 泰山服务器 oracle数据库,泰山之巅对话•Oracle数据库掌门人:领先对手10年?凭什么口气这么大?...
- React开发(231):常见手机号邮箱的正则
- 计算机科技新闻,新浪网_科技时代_计算机_新闻报道
- 将Activity启动模式说的明白一点
- php安装redis扩展模块,[教程]为PHP安装phpRedis扩展模块
- 程序员别埋头苦干了,花时间学点薪资谈判技巧多赚一个亿可好?
- 对xhtml、dhtml、shtml的解释说明
- Expo大作战(四十一)【完】--expo sdk 之 Assets,BarCodeScanner,AppLoading
- python登录微信pc版_详解PC端微信扫码注册和登录实例代码
- dble 不支持的关键字 mysql_分布式 | DBLE Release Notes 详细解读 2.19.11.0
- Python-OpenCV 的 remap函数
- 基于51单片机的万年历(包含闹钟,秒表)实现
- JQuery制作飘落的树叶动画效果
- junit-vintage-engine和junit-jupiter-engine之间的区别?
- 安卓手机使用LEAP企业Wifi网络(公司内部的证书方式)
- 设计模式之观察者模式 1
- python 笔记:dtw包
- Win11通过注册表修改文件默认打开方式
- MapInfo点符号的制作方法
热门文章
- PL/SQL(英文版)中如何改变 字体大小
- 预训练技术在美团到店搜索广告中的应用
- 破旧立新破解先有鸡还是先有蛋
- 中控考勤机通过公网添加入异地中控系统
- MAPICS系统简单概述(zt)
- 买了一台云服务器,到底能用来干嘛?
- Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
- 《测试开发方法论》之 未雨绸缪
- C++学习——cc1: all warnings being treated as errors 解决办法
- 如何正确计算并最大限度减小IGBT的死区时间