请教在linux C中怎样把ip字符串和整型数字之间的转换问题

时间:2022-07-06 17:53:36
我知道在win下面,用inet_addr和inet_ntoa函数可以方便的进行相互转换,请问在linux有类似的函数吗?有的话需要什么头文件?
谢谢了

5 个解决方案

#1


一样的。有这样的函数
在 #include <arpa/inet.h>中

#2


需要告诉楼主的是这两个函数是Unix里的函数,准确的说是最早是出现在4.2BSD里的。

INET(3)                FreeBSD Library Functions Manual                INET(3)

NAME
     inet_aton, inet_addr, inet_network, inet_ntoa, inet_ntop, inet_pton,
     inet_makeaddr, inet_lnaof, inet_netof -- Internet address manipulation
     routines

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>
     #include <netinet/in.h>
     #include <arpa/inet.h>

     int
     inet_aton(const char *cp, struct in_addr *pin);

     in_addr_t
     inet_addr(const char *cp);

     in_addr_t
     inet_network(const char *cp);

     char *
     inet_ntoa(struct in_addr in);

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

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

     struct in_addr
     inet_makeaddr(in_addr_t net, in_addr_t lna);

     in_addr_t
     inet_lnaof(struct in_addr in);

     in_addr_t
     inet_netof(struct in_addr in);


#3


Linux提供了更好的inet_ntop函数,避免了返回地址在静态缓冲区里,后续调用覆盖它的问题,并且支持IPv6。能用这个函数就不用inet_ntoa了

#4


好的,谢谢各位

#5


谢谢三楼,我结贴时没看到您的帖子,所以没有给您分,望见谅

#1


一样的。有这样的函数
在 #include <arpa/inet.h>中

#2


需要告诉楼主的是这两个函数是Unix里的函数,准确的说是最早是出现在4.2BSD里的。

INET(3)                FreeBSD Library Functions Manual                INET(3)

NAME
     inet_aton, inet_addr, inet_network, inet_ntoa, inet_ntop, inet_pton,
     inet_makeaddr, inet_lnaof, inet_netof -- Internet address manipulation
     routines

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>
     #include <netinet/in.h>
     #include <arpa/inet.h>

     int
     inet_aton(const char *cp, struct in_addr *pin);

     in_addr_t
     inet_addr(const char *cp);

     in_addr_t
     inet_network(const char *cp);

     char *
     inet_ntoa(struct in_addr in);

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

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

     struct in_addr
     inet_makeaddr(in_addr_t net, in_addr_t lna);

     in_addr_t
     inet_lnaof(struct in_addr in);

     in_addr_t
     inet_netof(struct in_addr in);


#3


Linux提供了更好的inet_ntop函数,避免了返回地址在静态缓冲区里,后续调用覆盖它的问题,并且支持IPv6。能用这个函数就不用inet_ntoa了

#4


好的,谢谢各位

#5


谢谢三楼,我结贴时没看到您的帖子,所以没有给您分,望见谅