import socket
import os
host = "192.168.10.147"
if os.name == 'nt':
socket_protocol = socket.IPPROTO_IP
else:
socket_protocol = socket.IPPROTO_ICMP
sniffer = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket_protocol)
sniffer.bind((host,9999))
sniffer.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL, 1)_
if os.name == "nt":
sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)
print sniffer.recvfrom(65565)
if os.name == 'nt':
sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
运行结果:
Traceback (most recent call last):
0
File "C:/Users/Think/PycharmProjects/Test/sniffer.py", line 10, in
sniffer = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket_protocol)
File "C:\Python27\lib\socket.py", line 191, in init
_sock = _realsocket(family, type, proto)
socket.error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions
不是端口的问题,在获取sniffer实例的时候就已经异常了。是操作权限的问题吗?