Python Socket模組中的IP轉換函式

2021-06-21 13:33:33 字數 1437 閱讀 8614

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...