Converts Internet addresses to Internet numbers. ip2long long2ip
http://php.net/manual/en/function.long2ip.php
PHP: ip2long - Manual http://php.net/manual/en/function.ip2long.php Technical Reference: Communications, Volume 2 - inet_addr Subroutine http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm
import socket, struct def ip2long(ip):
packedIP = socket.inet_aton(ip)
return struct.unpack("!L", packedIP)[0] def log2ip(long):
return socket.inet_ntoa(struct.pack('!L', long))
[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]
Technical Reference: Communications, Volume 2
inet_addr Subroutine
Purpose
Converts Internet addresses to Internet numbers.
Library
Standard C Library (libc.a)
Syntax
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <netinet/in.h>
#include <arpa/inet.h>
unsigned long inet_addr ( CharString)
char *CharString;
Description
The inet_addr subroutine converts an ASCII string containing a valid Internet address using dot notation into an Internet address number typed as an unsigned long value. An example of dot notation is 120.121.5.123. The inet_addr subroutine returns an error value if the Internet address notation in the ASCII string supplied by the application is not valid.
Note: Although they both convert Internet addresses in dot notation to Internet numbers, the inet_addr subroutine and inet_network process ASCII strings differently. When an application gives the inet_addr subroutine a string containing an Internet address value without a delimiter, the subroutine returns the logical product of the value represented by the string and 0xFFFFFFFF. For any other Internet address, if the value of the fields exceeds the previously defined limits, the inet_addr subroutine returns an error value of -1.
When an application gives the inet_network subroutine a string containing an Internet address value without a delimiter, the inet_network subroutine returns the logical product of the value represented by the string and 0xFF. For any other Internet address, the subroutine returns an error value of -1 if the value of the fields exceeds the previously defined limits.
Sample return values for each subroutine are as follows:
| Application string | inet_addr returns | inet_netowork returns |
| 0x1234567890abcdef 0x1234567890abcdef. 256.257.258.259 | 0x090abcdef 0xFFFFFFFF (= -1) 0xFFFFFFFF (= -1) | 0x000000ef 0x0000ef00 0x00010203 |
The ASCII string for the inet_addr subroutine must conform to the following format:
string::= field | field delimited_field^1-3 | delimited_field^1-3
delimited_field::= delimiter field | delimiter
delimiter::= .
field::= 0X | 0x | 0Xhexadecimal* | 0x hexadecimal* | decimal* | 0 octal
hexadecimal::= decimal |a|b|c|d|e|f|A|B|C|D|E|F
decimal::= octal |8|9
octal::= 0|1|2|3|4|5|6|7
Notes:
- ^n indicates n repetitions of a pattern.
- ^n-m indicates n to m repetitions of a pattern.
- * indicates 0 or more repetitions of a pattern, up to environmental limits.
- The Backus Naur form (BNF) description states the space character, if one is used. Text indicates text, not a BNF symbol.
The inet_addr subroutine requires an application to terminate the string with a null terminator (0x00) or a space (0x30). The string is considered invalid if the application does not end it with a null terminator or a space. The subroutine ignores characters trailing a space.
The following describes the restrictions on the field values for the inet_addr subroutine:
| Format | Field Restrictions (in decimal) |
|---|---|
| a | Value_a < 4,294,967,296 |
| a.b | Value_a < 256; Value_b < 16,777,216 |
| a.b.c | Value_a < 256; Value_b < 256; Value_c < 65536 |
| a.b.c.d | Value_a < 256; Value_b < 256; Value_c < 256; Value_d < 256 |
Applications that use the inet_addr subroutine can enter field values exceeding these restrictions. The subroutine accepts the least significant bits up to an integer in length, then checks whether the truncated value exceeds the maximum field value. For example, if an application enters a field value of 0x1234567890 and the system uses 16 bits per integer, then the inet_addr subroutine uses bits 0 -15. The subroutine returns 0x34567890.
Applications can omit field values between delimiters. The inet_addr subroutine interprets empty fields as 0.
Notes:
- The inet_addr subroutine does not check the pointer to the ASCII string. The user must ensure the validity of the address in the ASCII string.
- The application must verify that the network and host IDs for the Internet address conform to either a Class A, B, or C Internet address. The inet_attr subroutine processes any other number as a Class C address.
Parameters
| CharString | Represents a string of characters in the Internet address form. |
Return Values
For valid input strings, the inet_addr subroutine returns an unsigned long value comprised of the bit patterns of the input fields concatenated together. The subroutine places the first pattern in the most significant position and appends any subsequent patterns to the next most significant positions.
The inet_addr subroutine returns an error value of -1 for invalid strings.
Note: An Internet address with a dot notation value of 255.255.255.255 or its equivalent in a different base format causes the inet_addr subroutine to return an unsigned long value of 4294967295. This value is identical to the unsigned representation of the error value. Otherwise, the inet_addr subroutine considers 255.255.255.255 a valid Internet address.
Implementation Specifics
The inet_addr subroutine is part of Base Operating System (BOS) Runtime.
All applications containing the inet_addr subroutine must be compiled with _BSD set to a specific value. Acceptable values are 43 and 44. In addition, all socket applications must include the BSD libbsd.a library.
Files
| /etc/hosts | |
| Contains host names. | |
| /etc/networks | |
| Contains network names. | |
Related Information
The endhostent subroutine, endnetent subroutine, gethostbyaddr subroutine, gethostbyname subroutine, getnetbyaddr subroutine, getnetbyname subroutine, getnetent subroutine, inet_Inaof subroutine, inet_makeaddr subroutine, inet_netof subroutine, inet_network subroutine, inet_ntoa subroutine, sethostent subroutine, setnetent subroutine.
Sockets Overview and Understanding Network Address Translation in AIX 5L Version 5.1 Communications Programming Concepts.
[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]
Converts Internet addresses to Internet numbers. ip2long long2ip的更多相关文章
- [区分] 1.计算机网络/internet(互联网) 2.Internet(因特网) 3.www/web(万维网)
internet(互联网或互连网)是一个通用名词,泛指由多个计算机网络互联而成的虚拟网络.Inernet(因特网)是一个专用名词,指当前全球最大的.开放的.由众多网络相互连接而成的特定的计算机网络,它 ...
- 读书笔记二 How Does the Internet work?
原文链接: https://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm 先写写 ...
- 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- TWebBrowser 调用最新版的Ie Internet Feature Controls (B..C)
Internet Feature Controls (B..C) Updated: July 2012 This article describes feature controls with n ...
- Internet Explorer 无法启用 JavaScript 怎么办?
在 Internet Expllorer 8/9 中,有些同学在浏览网页时,收到提示:“需要启用 JavaScript …”,并且会发现网页上某些功能不能用了,比如点击网页里的按钮没反应等等. 怎么启 ...
- 解决安装失败的 Internet Explorer 11
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成.微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章.然而由机器翻译的文章并不总是完美的.它 ...
- AWS中的Internet 网关
nternet 网关是一种横向扩展.支持冗余且高度可用的 VPC 组件,可实现 VPC 中的实例与 Internet 之间的通信.因此它不会对网络流量造成可用性风险或带宽限制. Internet 网关 ...
- 登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting
登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting 今 ...
- internet与Internet的区别
internet是用一个共同的协议族把多个网络连接在一起.而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过1 0 0万台).Internet是一个internet,但in ...
随机推荐
- 图解SQL inner join、left join、right join、full outer join、union、union all的区别
转于:http://justcoding.iteye.com/blog/2006487 这是一篇来自Coding Horror的文章. SQL的Join语法有很多:有inner的,有outer的,有l ...
- poj1860--Currency Exchange
Bellman-ford算法的反向应用--正循环检查 /** \brief poj 1860 Bellman-Ford * * \param date 2014/7/24 * \param state ...
- 安装Eclipse插件长时间卡在 calculating requirements and dependencies
把"Contact all update sites during install to find required software"前面的勾去掉,然后点击下一步,这样之后问题迎 ...
- hdu 1018 Big Number 数学结论
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- QBC运算符含义
HQL运算符 QBC运算符 含义 = Restrictions.eq() ...
- JAVA转化Unicode编码
package yyl.example.basic.codec; import java.util.Locale; import java.util.regex.Matcher; import jav ...
- vim中ctags应用
ctags(Generate tag files for source code)是vim下方便代码阅读的工具.尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM.并且VIM中已经默认安装 ...
- 缓存数据库redis、memcached。 MongoDB 资源集锦
Redis学习资源: 1.Redis学习手册 http://www.cnblogs.com/stephen-liu74/archive/2012/03/14/2349815.html 2.c#连接Re ...
- Flex上传文件Java端解决中文乱码问题
1.Flex端进行编码 public function encodeStr(str:String, charSet:String):String { var result:String =" ...
- quick-cocos2d-x的热更新机制实现
quick-cocos2d-x的热更新机制实现 0 依赖 这里说的热更新,指的是客户端的更新. 大致的流程是,客户端在启动后访问更新api,根据更新api的反馈,下载更新资源,然后使用新的资源启动客户 ...