首页 > 编程知识 正文

ip地址自动转换器,字符串转ip

时间:2023-05-04 08:19:56 阅读:162614 作者:4324

参考这个句子

IP地址的本地字节顺序转换函数包括:

1、uint32_t htonl(uint32_t hostlong); //一般不用来转换ip地址

此函数从int转移到int类型,但我们熟悉的ip是点的十进制字符串。

不好用。 (因为您必须先将点转换为十进制,然后再转换为uint32_t,然后再调用htonl )函数。 )

因此,大多数函数用于对32位(4字节整数)进行字节序转换。

ps:

如果不指定ip地址,则可以直接在此宏中定义INADDR_ANY,这是最简单的。

addr.sin _ addr.s _ addr=htonl (in addr _ any ); //自动获取当前网卡的有效ip地址

2、intinet_pton(int af,const char*src,void*dst); //经常用这个函数点分十进制字符串ip转换为网络字节序。

//例char *ip='192.168.1.1 '; char *port='8000 '; struct sockaddr_in addr; addr.sinfamily=AF_INET; //afin et6addr.sin _ port=htons (atoi (port ) ); inet_Pton(af_inet,ip,addr.sin_addr ); 同样,如果需要将网络字节序转换为主机字节序

使用const char*inet_ntop(int af,const void *src,char *dst,socklen_t size);-------直接转换为点的十进制字符串。

dst是变换后点分十进制字符串; size是dst的大小

//示例charstr[sizeof(in_addr ) ]; ptr=inet_ntop(af_inet,foo.sin_addr,str,sizeof(str ) ); 从附录5可以看出,inet_ntop的第二个参数是指向struct in_addr的结构指针。

3、inet_addr ()函数//已弃用,不建议使用

//例char *ip='192.168.1.1 '; char *port='8000 '; struct sockaddr_in addr; addr.sinfamily=AF_INET; //afin et6addr.sin _ port=htons (atoi (port ) ); addr.sin _ addr.s _ addr=inet _ addr (IP ); 4、http://www.Sina.com/:将IP地址转换为网络字节序有以下三种方法。

写程序的时候,通常选择前两种形式。

1 ) addr.sin _ addr.s _ addr=htonl (in addr _ any );

2 ) inet_Pton(af_inet,ip,addr.sin_addr );

注: inet_pton的第三个参数具有in_addr结构指针,而不是addr.sin_addr.s_addr。 5因为从附录中可以看到,dst必须是sizeof(structin_addr ) bytes long

5、附录:

总结

sa_family_t sin_family; //地址族合同

in_port_t sin_port; //端口号

struct in_addr sin_addr; //ip地址

struct sockaddr_in{

};

uint32_t s_addr;

struct in_addr{

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。