词条 | inet_aton |
释义 | inet_aton()inet_aton()是一个改进的方法来将一个字符串IP地址转换为一个32位的网络序列IP地址。 函数概要如下:头文件:#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> 完整描述: int inet_aton(const char *string, struct in_addr*addr); 参数描述: 1 输入参数string包含ASCII表示的IP地址。 2 输出参数addr是将要用新的IP地址更新的结构。 返回值: 如果这个函数成功,函数的返回值非零,如果输入地址不正确则会返回零。使用这个函数并没有错误码存放在errno中,所以他的值会被忽略。 函数说明及举例:对于这个函数有一点迷惑的就是这个函数调用所需要的两个参数。 如果我们定义了一个AF_INET套接口地址: struct sockaddr_in adr_inet; /* AF_INET */ 提供给inet_aton函数调用的参数指针为 &adr_inet.sin_addr 下面这个程序使用inet_aton函数,而不是我们在前面所谈到的in_addr函数。 /* * inetaton.c * * Example using inet_aton */ #include #include #include #include #include #include .. #include #include #include /* * this function reports the error and * exits back to the shell */ static void bail(const char *on_what) { fputs(on_what,stderr); fputs("\",stderr); } int main(int argc,char **argv) { int z; struct sockaddr_in adr_inet; /* AF_INET */ int len_inet; /* length */ int sck_inet; /* Socket */ /* Create a Socket */ sck_inet = socket(AF_INET,SOCK_STREAM,0); if(sck_inet == -1) bail("Socket()"); /* Establish address */ memset(&adr_inet,0,sizeof adr_inet); adr_inet.sin_family = AF_INET; adr_inet.sin_port = htons(9000); . if( !inet_aton("127.0.0.1",&adr_inet.sin_addr)) bail("bad address"); len_inet = sizeof adr_inet; /* Bind it to the socket */ z = bind(sck_inet,(struct sockaddr *)&adr_inet,len_inet); if(z == -1) bail("bind()"); /* Display our socket address */ system("netstat -pa --tcp 2>/dev/null" " | grep inetaton"); return 0; } 程序的运行结果如下: S$ ./inetaton tcp 0 0 127.0.0.23:9000 *:* CLOSE 1007/inetaton |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。