Unix Network Programming Episode 79
‘gai_strerror’ Function
The nonzero error return values from getaddrinfo have the names and meanings shown in Figure 11.7. The function gai_strerror takes one of these values as an argument and returns a pointer to the corresponding error string.
#include <netdb.h>
const char *gai_strerror (int error);
‘freeaddrinfo’ Function
All the storage returned by getaddrinfo, the addrinfo structures, the ai_addr structures, and the ai_canonname string are obtained dynamically (e.g., from malloc). This storage is returned by calling freeaddrinfo.
#include <netdb.h>
void freeaddrinfo (struct addrinfo *ai);
ai should point to the first addrinfo structure returned by getaddrinfo. All the structures in the linked list are freed, along with any dynamic storage pointed to by those structures (e.g., socket address structures and canonical hostnames).
‘getaddrinfo’ Function: IPv6
The POSIX specification defines the getaddrinfo function and the information it returns for both IPv4 and IPv6.
- getaddrinfo is dealing with two different inputs: the type of socket address structure the caller wants back and the type of records that should be searched for in the DNS or other database.
- The address family in the hints structure provided by the caller specifies the type of socket address structure that the caller expects to be returned. If the caller specifies AF_INET, the function must not return any sockaddr_in6 structures; if the caller specifies AF_INET6, the function must not return any sockaddr_in structures.
- POSIX says that specifying AF_UNSPEC will return addresses that can be used with any protocol family that can be used with the hostname and service name. This implies that if a host has both AAAA records and A records, the AAAA records are returned as sockaddr_in6 structures and the A records are returned as sockaddr_in structures. It makes no sense to also return the A records as IPv4-mapped IPv6 addresses in sockaddr_in6 structures because no additional information is being returned: These addresses are already being returned in sockaddr_in structures.
- This statement in the POSIX specification also implies that if the AI_PASSIVE flag is specified without a hostname, then the IPv6 wildcard address (IN6ADDR_ANY_INIT or 0::0) should be returned as a sockaddr_in6 structure, along with the IPv4 wildcard address (INADDR_ANY or 0.0.0.0), which is returned as a sockaddr_in structure. It also makes sense to return the IPv6 wildcard address first because we will see in Section 12.2(See 9.1.2) that an IPv6 server socket can handle both IPv6 and IPv4 clients on a dual-stack host.
- The address family specified in the hint structure’s ai_family member, along with the flags such as AI_V4MAPPED and AI_ALL specified in the ai_flags member, dictate the type of records that are searched for in the DNS (A and/or AAAA) and what type of addresses are returned (IPv4, IPv6, and/or IPv4-mapped IPv6). We summarize this in Figure 11.8.
- The hostname can also be either an IPv6 hex string or an IPv4 dotted-decimal string. The validity of this string depends on the address family specified by the caller. An IPv6 hex string is not acceptable if AF_INET is specified, and an IPv4 dotted-decimal string is not acceptable if AF_INET6 is specified. But, if AF_UNSPEC is specified, either is acceptable and the appropriate type of socket address structure is returned.
‘getaddrinfo’ Function: Examples
We will now show some examples of getaddrinfo using a test program that lets us enter all the parameters: the hostname, service name, address family, socket type, and AI_CANONNAME and AI_PASSIVE flags. (We do not show this test program, as it is about 350 lines of uninteresting code. It is provided with the source code for the book, as described in the Preface.) The test program outputs information on the variable number of addrinfo structures that are returned, showing the arguments for a call to socket and the address in each socket address structure.
‘host_serv’ Function
Our first interface to getaddrinfo does not require the caller to allocate a hints structure and fill it in. Instead, the two fields of interest, the address family and the socket type, are arguments to our host_serv function.
#include "unp.h"
struct addrinfo *host_serv (const char *hostname, const char *service, int family, ints socktype);
#include "unp.h"struct addrinfo* host_serv(const char *host, const char *serv, int family, int socktype)
{int n;struct addrinfo hints, *res;bzero(&hints, sizeof(struct addrinfo));hints.ai_flags=AI_CANONNAME;hints.ai_family=family;hints.ai_socktype=socktype;if((n=getaddrinfo(host, serv, &hints, &res))!=0){return NULL;}return res;
}
host_serv function
相关文章:
Unix Network Programming Episode 79
‘gai_strerror’ Function The nonzero error return values from getaddrinfo have the names and meanings shown in Figure 11.7. The function gai_strerror takes one of these values as an argument and returns a pointer to the corresponding error string. #incl…...
Cesium展示——wkt 数据绘制
文章目录 需求分析1. 第一步,数据类型转换2. 第二步,数据渲染需求 WKT 是什么:WKT 简介 在这里,我选择将 Cesium 中将wkt数据转化为geoJSON格式后渲染至地球上 分析 1. 第一步,数据类型转换 npm install terraformer-wkt-parser --savelet wkts =...
打造完美家庭空间,让生活更加舒适
在现代繁忙的都市生活中,家是人们温暖而舒适的避风港。而如何打造一个恰到好处的家庭空间,成为了许多人心中的追求。今天,就让我们来探索一些空间布局方案,为您的家庭营造一个完美融合功能与美感的舒适空间。 🏠&…...
解决loadDep:omelette: sill install loadAllDepsIntoIdealTree
报错信息如下: 解决方案: 1、设置为淘宝的镜像源 npm config set registry https://registry.npm.taobao.org 2、 命令检验是否成功 npm config get registry 3、继续运行npm install即可 npm install 运行效果:...
【深蓝学院】手写VIO第2章--IMU传感器--作业
这次作业坑很多,作业说明的不清楚,摸索了很长时间才将此次作业完成,在这里进行记录。 1. T1 1.1 题干 1.2 解答 1.2.1 法1,ros related方法 不知道为什么我的launch不了,在imu_utils目录下面建立build后࿰…...
Android多线程学习:线程
一、概念 进程:系统资源分配的基本单位,进程之间相互独立,不能直接访问其他进程的地址空间。 线程:CPU调度的基本单位,线程之间共享所在进程的资源,包括共享内存,公有数据,全局变量…...
canvas 入门
canvas 入门 canvas是干什么的?canvas 绘制直线canvas画虚线canvas 绘制三角形canvas 绘制正方形canvas 绘制圆形、圆弧与椭圆canvas绘制文本canvas绘制图片 canvas是干什么的? <canvas> 是HTML5中的标签,它是一个容器,可以…...
建议收藏!混迹职场多年总结出的8大技巧!
1. 不要吃“哑巴”亏:不管在什么企业,一定要“会说话”,敢于表达自己,但是又兼顾身边人的感受,考虑好自己的言行将会带来的后果。良好的沟通技巧对于在职场中建立良好的人际关系和解决问题至关重要。学会倾听、表达和理…...
OpenCV4(C++)—— 视频和摄像头的加载、显示与保存
文章目录 一、加载与显示二、保存 一、加载与显示 视频或摄像头的加载是使用 cv::VideoCapture 类。(这个类和 ifstream 类比较相似,视频或摄像头的加载和文本文件操作是大致相同。主要步骤:(1)加载(打开&a…...
excel功能区(ribbonx)编程笔记6-box的使用
box元素用来在组里指定的控件周围放置一个可视的框,其主要目的是将控件作为一个单元组合在一起。 通常情况下,分配到组中的每个控件都被放置在先前的控件下面直到该列被填满,然后下一个控件被放置在其右侧列的顶行。然而,通过在框里面组合命令,可以将几个控件视作一个整体…...
oralce配置访问白名单的方法
目录 配置sqlnet.ora文件 重新加载使配置生效 注意事项 Oracle数据库安全性提升:IP白名单的配置方法 随着互联网的发展,数据库安全问题也越来越严重。Oracle是目前使用较为广泛的一款数据库管理系统,而IP白名单作为提升数据库安全性的有效…...
ToBeWritten之让响应团队参与并做好沟通
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...
ffmpeg ts 关于av_seek_frame
1 ffmpeg命令行 一般对视频文件的裁剪 我们通过一行 ffmpeg命令行即可实现,比如 ffmpeg -ss 0.5 - t 3 - i a.mp4 vcodec copy b.mp4 其中 -ss 放置较前 开启精准seek定位 对于mp4而言 seek将从moov中相关索引表查找 0.5s时刻附近最近的关键帧 (此描述…...
【C++】set map 的底层封装
在了解底层封装之前除了对set和map的使用情况要有一定了解,还需要先学习一下二叉搜索树,AVL树,红黑树这些数据结构。 【C】二叉搜索树 【C】AVL树 & 红黑树 RBTree.h enum Colour {RED,BLACK };template<class T> class RBTreeNo…...
JavaWeb整体介绍
JavaWeb整体介绍 什么是Java Web Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站JavaWeb:是使用Java技术解决相关web互联网领域的技术栈(就是用java开发网站) 网页&a…...
一些常见分布-正态分布、对数正态分布、伽马分布、卡方分布、t分布、F分布等
目录 正态分布 对数正态分布 伽马分布 伽马函数 贝塔函数 伽马分布 卡方分布 F分布 t分布 附录 参考文献 本文主要介绍一些常见的分布,包括正态分布、对数正态分布、伽马分布、卡方分布、F分布、t分布。给出了分布的定义,推导了概率密度函数&…...
科技云报道:押注向量数据库,为时过早?
科技云报道原创。 在大模型的高调火热之下,向量数据库也获得了前所未有的关注。 近两个月内,向量数据库迎来融资潮,Qdrant、Chroma、Weaviate先后获得融资,Pinecone宣布1亿美元B轮融资,估值达到7.5亿美元。 东北证券…...
铭控传感亮相2023国际物联网展,聚焦“多场景物联感知方案”应用
金秋九月,聚焦IoT基石技术,荟萃最全物联感知企业,齐聚IOTE 2023第20届国际物联网展深圳站。铭控传感携智慧楼宇,数字工厂,智慧消防,智慧泵房等多场景物联感知方案及多品类无线传感器闪亮登场,现…...
前端demo: 实现对图片进行上传前的压缩功能
前端可以使用canvas和File API来对图片进行压缩和缩放处理,以下是一个示例代码 : 压缩方法compressImg这段代码是实现对图片进行上传前的压缩功能 1. 定义了一个压缩图片的函数 compressImg,接受两个参数:file表示要压缩的文件,q…...
计算机网络(文章链接汇总)
参考引用 计算机网络微课堂-湖科大教书匠计算机网络(第7版)-谢希仁 计算机网络(一):概述计算机网络(二):物理层计算机网络(三):数据链路层计算机网…...
Windows环境下Nacos-Server 2.4.0.1的安装与MySQL配置实战
1. 环境准备与安装包下载 在Windows系统上部署Nacos-Server 2.4.0.1之前,我们需要先做好基础环境准备。这里我建议使用Windows 10或更高版本的操作系统,实测在Windows 7上可能会遇到兼容性问题。首先确保你的机器已经安装了Java 8或Java 11运行环境&…...
汉字破局:AI时代的文明反攻与英语世界的“偷师”真相
汉字破局:AI时代的文明反攻与英语世界的“偷师”真相今天我们要聊的,从来不是简单的“中文VS英文”语言之争,而是一场席卷AI世界的文明维度大反攻——三千年前刻在龟甲上的甲骨文,那些横平竖直、撇捺交错的线条,正在以…...
C++ constexpr 编译期优化
C constexpr 编译期优化:释放代码的潜在性能 在现代C开发中,编译期计算已成为提升程序性能的关键技术之一。constexpr关键字自C11引入以来,逐渐演变为一种强大的工具,允许开发者在编译阶段完成复杂的计算和初始化,从而…...
5大核心优势!工业控制编程从入门到精通:OpenPLC Editor实战指南
5大核心优势!工业控制编程从入门到精通:OpenPLC Editor实战指南 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域,如何以最低成本实现专业级控制逻辑开发?…...
DmtrPots电位器库:嵌入式模拟输入抗抖动与高鲁棒处理方案
1. DmtrPots电位器库技术解析:面向嵌入式系统的高鲁棒性模拟输入处理方案1.1 库定位与工程价值DmtrPots是专为Arduino及Teensy平台设计的电位器(Potentiometer)专用信号处理库,由Dmtr.org团队开发并维护。该库并非简单的analogRea…...
bb_imu:嵌入式多IMU统一驱动库与自动识别方案
1. 项目概述bb_imu是由 BitBank Software, Inc. 开发并维护的嵌入式惯性测量单元(IMU)统一驱动库,专为资源受限的微控制器平台(如基于 ARM Cortex-M 系列的 STM32、ESP32、nRF52,以及 Arduino AVR 架构)设计…...
PCL2启动器“被管理员禁止“错误全面解析与解决方案
PCL2启动器"被管理员禁止"错误全面解析与解决方案 【免费下载链接】PCL 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 近期有大量PCL2启动器用户反馈在启动游戏时遭遇"被管理员禁止"的错误提示,导致无法正常进入游戏。这一问题主要…...
3分钟掌握视频转PPT终极技巧:快速提取幻灯片内容
3分钟掌握视频转PPT终极技巧:快速提取幻灯片内容 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 还在为会议录屏中的PPT幻灯片提取而烦恼吗?extract-video-pp…...
MiniCPM-V-2_6模型蒸馏与部署:解决深度学习模型耦合过度问题
MiniCPM-V-2_6模型蒸馏与部署:解决深度学习模型耦合过度问题 你是不是遇到过这种情况?好不容易训练好一个功能强大的模型,想把它部署到实际应用里,却发现它像一块密不透风的巨石——想改一个小功能,就得动整个模型&am…...
GuwenBERT:古文自然语言处理的技术革新
GuwenBERT:古文自然语言处理的技术革新 【免费下载链接】guwenbert GuwenBERT: 古文预训练语言模型(古文BERT) A Pre-trained Language Model for Classical Chinese (Literary Chinese) 项目地址: https://gitcode.com/gh_mirrors/gu/guwe…...
