inet_pton和inet_ntop

inet_pton:

linux下:

#include <sys/socket.h>

#include <netinet/in.h>

#include<arpa/inet.h>

函数原型:

inet_pton:将“点分十进制” -> “二进制整数”

int inet_pton(int af, const char *src, void *dst);

这个函数转换字符串到网络地址,第一个参数af是地址簇,第二个参数*src是来源地址,第三个参数* dst接收转换后的数据。

inet_pton 是inet_addr的扩展,支持的多地址族有下列:

af = AF_INET

src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr结构体,并复制在*dst中。

af = AF_INET6

src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中。

如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。

inet_ntop:

Linux下inet_pton和inet_ntop这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换。而且,这2个函数能够处理ipv4和ipv6。算是比较新的函数了。

inet_ntop函数原型如下[将“二进制整数” -> “点分十进制”]

#include <sys/types.h>

#include <sys/socket.h>

#include <arpa/inet.h>

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);

这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和inet_pton相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC。

时间: 2024-10-08 01:04:24

inet_pton和inet_ntop的相关文章

关于Socket编程中的inet_ntop、inet_pton和inet_ntoa、inet_addr

今天在VS2013中调试Socket代码时,遇到了点小问题: 问题代码为: inet_ntoa(addrClient.sin_addr); 生成错误消息为: error C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings 1> c:\program files (x86)\wind

IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa

inet_pton NAME ????inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); DESCRIPTION ????该函数将字符串src转换为af地址类型协议簇的网络地址,并存储到dst中.对于af参数,必须为AF_INET或AF_INET6 RETURN VALUE ????inept_pto

【网络编程】inet_addr、inet_ntoa、inet_aton、inet_ntop和inet_pton区分

先上一张图 1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效.(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序) in_addr_t

很全的linux网络编程技巧

注:作者王晓,本人认为总结得很好,故记之,绝无侵权之意. 1. LINUX网络编程基础知识 1 1.1. TCP/IP协议概述 1 1.2. OSI参考模型及TCP/IP参考模型 1 1.3. TCP协议 3 1.4. UDP协议 5 1.5. 协议的选择 6 2. 网络相关概念 6 2.1. socket概念 7 2.2. socket类型 8 2.3. socket信息数据结构 8 2.4. 数据存储优先顺序的转换 8 2.5. 地址格式转化 9 2.6. 名字地址转化 10 3. sock

readn、write、readline

字节流套接字上的read和write函数所表现的行为不同于通常的文件IO 字节流套接字上调用read或write输入或输出的字节数可能比请求的数量少,然而这不是出错的状态 这个现象的原因在于内核中用于套接字的缓冲区可能已经达到了极限 此时需要的是调用者再次调用read或write函数,以输入或输出剩余的字节 ssize_t readn(int fd, void *vptr, size_t n) /* include readn */ #include "unp.h" ssize_t /

Windows Socket编程--ip地址转换

在Windows Socket编程中,需要将ip地址在网络字节顺序与主机字节顺序之间进行转换,该过程的代码如下: 1 #include <Winsock2.h> 2 #include <Ws2tcpip.h> //为了使用inet_pton()和inet_ntop()函数 3 #include <iostream> 4 5 #pragma comment(lib,"ws2_32.lib") //socket编程需要引用该库 6 7 using std

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

Unix网络编程 之 socket基础

基本结构 (这部分的地址均为网络地址<网络字节序>) 1.struct sockaddr:通用套接字地址结构 此结构用于存储通用套接字地址. 数据结构定义: typedef unsigned short sa_family_t; struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ };    sa_fa

使用PF_PACKET和SOCK_RAW发送自定义type以太网数据包

本文介绍使用PF_PACKET和SOCK_RAW发送自定义type以太网数据包,使用wireshare抓包可以获取到数据包,为Linux内核增加网络协议做铺垫. 先上码: #include <stdio.h> #include <stdlib.h> #include <unistd.h>           // close() #include <string.h>           // strcpy, memset(), and memcpy() #