python socket模組中包含一些有用ip轉換函式,說明如下:
socket.ntohl(x) // 類似於c語言的ntohl(x)
把32位正整數從網路序轉換成主機位元組序。
socket.ntohs(x) // 類似於c語言的ntohs(x)
把16位正整數從網路序轉換成主機位元組序。
socket.htonl(x) // 類似於c語言的htonl(x)
把32位正整數從主機位元組序轉換成網路序。
socket.htons(x) // 類似於c語言的htons(x)
把16位正整數從主機位元組序轉換成網路序。
socket.inet_aton(ip_string) // 依賴於inet_aton的c實現
轉換ipv4位址字串(192.168.10.8)成為32位打包的二進位制格式(長度為4個位元組的二進位制字串),它不支援ipv6。inet_pton()支援ipv4/ipv6位址格式。
socket.inet_ntoa(packed_ip)
轉換32位打包的ipv4位址為ip位址的標準點號分隔字串表示。
socket.inet_pton(address_family,ip_string)
轉換ip位址字串為打包二進位制格式。位址家族為af_inet和af_inet6,它們分別表示ipv4和ipv6。
socket.inet_ntop(address_family,packed_ip)
>>>import socket
>>>import struct
>>>socket.ntohl(struct.unpack("i",socket.inet_aton("10.10.58.64"))[0])
168442432l
>>>socket.inet_ntoa(struct.pack("i", socket.htonl(168442432l)))
'10.10.58.64'
>>>struct.unpack("=i", socket.inet_aton("190.10.58.64"))
(1077545662,)
>>>socket.inet_ntoa(struct.pack("=i", 1077545662))
'190.10.58.64'
# 從ip位址字串轉換為整數值
defip2int(ip_string):
return struct.unpack(「!i」,socket.inet_aton(ip))[0]
# 從網路位元組序的數字轉換為ip位址(點號分隔)
def int2ip(ip):
return socket.inet_ntoa(struct.pack(「!i」,ip))
Python socket模組應用
socket 本文記錄了一些socket模組的簡單應用,對於具體原理還沒來得及深究。利用socket模組進行埠連線驗證和掃瞄 在linux中常用nc命令來進行遠端埠是否開放的驗證。但是這個命令並不是系統自帶的,所以還比較麻煩。如果利用python自帶的socket模組就可以比較自由地進行埠驗證了。是...
Python Socket模組中的IP轉換函式
python socket模組中包含一些有用ip轉換函式,說明如下 socket.ntohl x 類似於c語言的ntohl x socket.ntohs x 類似於c語言的ntohs x socket.htonl x 類似於c語言的htonl x socket.htons x 類似於c語言的hton...
python socket 函式 模組
import socket socket 函式 1,語法格式 socket.socket family type proto family 套接字家族可以使af unix或者af inet type 套接字型別可以根據是tcp連線和udp連線分為sock stream或sock dgram prot...