c socket inet_pton inet_ntop

摘要:
参数:family既可以是AF_INET,也可以是AF_INET6;strptr指向ASCII地址的首地址,addrptr是套接字地址结构;返回值:如果成功返回1;如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT;如果参数af指定的地址族和src格式不对,函数将返回0。参数:family既可以是AF_INET,也可以是AF_INET6;strptr指向ASCII地址的首地址,addrptr是套接字地址结构;len目标存储单元大小,避免溢出调用者的缓冲区。
1
#include <arpa/inet.h>
/*

表达式格式(presentation):形如192.168.0.1,ipv6 X:X:X:X:X:X:X:X
数值格式(numeric):存储地址的二进制形式。
*/
/*
原型:int inet_pton( int family, const char *strptr, void *addrptr );
功能:将字符串strptr(即表达格式的地址)转换为网络地址。
参数:family既可以是AF_INET,也可以是AF_INET6;
strptr指向ASCII地址的首地址(***.***.***.***格式),addrptr是套接字地址结构;
返回值: 如果成功返回1;
如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT;
如果参数af指定的地址族和src格式不对,函数将返回0。
*/

/*
原型:const char *inet_ntop(int family, const void *addrptr, char *strptr, socklen_t len );
功能:将数值格式转换为表达式格式。
参数:family既可以是AF_INET,也可以是AF_INET6;
strptr指向ASCII地址的首地址(***.***.***.***格式),addrptr是套接字地址结构;
len目标存储单元大小,避免溢出调用者的缓冲区。
返回值: net_ntop函数成功的话返回字符串的首地址,错误返回NULL;
*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/socket.h>
#include<netinet/in.h>
intmain(void)
{
charIPdotdec[20]; //存放点分十进制IP地址
structin_addr s; // IPv4地址结构体
// 输入IP地址
printf("Please input IP address: ");
scanf("%s", IPdotdec);
// 转换
inet_pton(AF_INET, IPdotdec, (void*)&s);
printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序
// 反转换
inet_ntop(AF_INET, (void*)&s, IPdotdec, 16);
printf("inet_ntop: %s\n", IPdotdec);
}
/*
控制台:

Please input IP address: 192.168.0.1
inet_pton: 0x100a8c0
inet_ntop: 192.168.0.1
*/

免责声明:文章转载自《c socket inet_pton inet_ntop》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ASP生成静态Html文件技术杂谈HDMI下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

socket编程-优雅的断开连接shutdown

调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用 close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,是完全无法调用与数据收发有关的函数。...

Linux驱动虚拟地址和物理地址的映射(转)

原文地址:http://blog.chinaunix.net/uid-20792373-id-2979673.html 参考链接: Linux 虚拟地址与物理地址的映射关系分析https://blog.csdn.net/ordeder/article/details/41630945 虚拟地址映射到物理地址的学习(linux篇)https://blog.c...

DPDK并行计算

参考文献: 《深入浅出DPDK》 https://www.cnblogs.com/LubinLew/p/cpu_affinity.html ...................................................................... 前言:   处理器提高性能主要是通过两个途径,一个是提高IPC(CPU每一时...

linux网络编程-socket(1)

 上面是对应的IpV4的地址结构: sin_len整个结构的大小 sin_family协议族,对应Tcp固定为AF_INET,除了tcp协议外还支持unix域协议等 sin_port socket通信的端口 sin_addr是一个无符号的32位的网络字节地址 上面的结构体仅仅支持IPv4地址协议,如果支持其他协议咱办了,后面引入了通用协议的地址协议 在...

[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(五)

目的: 1. 了解PCI的基本知识,为完成watchdog的设备做准备。 准备知识: 简单的说,PCI 设备分3个空间。 配置空间,IO空间,内存地址空间。 PCI设备厂家决定了外设是使用IO空间还是IO内存空间。 我们通过读取配置空间的bar寄存器的最低位bit0来决定是该设备使用的是IO空间还是内存地址空间。 计算机一启动,bois或者linux会根据...

python socket常用接口说明

一、服务端 1、创建socket对象   socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) AF_INET:IPv4协议 SOCK_STREAM: 字节流套接字 返回值:非负整数,记为套接字表述符 2、socket绑定地址 socket.bind((host,port...