2 x nirvana x_nirvana 于 2016.03.05 00:05 提问

PYTHON网络编程遇到的问题
我在用PYTHON编写一个嗅探脚本时候出现的一个小问题,贴上原代码
import socket
import os

#监听的主机
host = "127.0.0.1"


#创建原始套接字,然后绑定在公开接口上
if os.name == "nt":
socket_protocol = socket.IPPROTO_IP
else:
scoket_protocol = socket.IPPROTO_ICMP

sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)

sniffer.bind((host,0))

#设置在捕获的数据包中包含IP头
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

#在windows上,我们设置IOCTL以启用混杂模式
if os.name == "nt":
sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

#读取单个数据包
print sniffer.recvfrom(65565)

#在windows平台上关闭混杂模式
if os.name == "nt":
sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)

运行时候提示:
File "e:\python\sniffer.py", line 14, in
sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)
File "F:\python\Lib\socket.py", line 191, in init
_sock = _realsocket(family, type, proto)

socket.error: [Errno 10013]

我百度到的说是端口被占用的问题,可是我找不到我的python服务所占用的端口号,特来求助,这个错误应该怎么解决,多谢

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.05 02:31

sniffer.bind((host,0))
0,是80吧。

x_nirvana
x_nirvana 0的意思是让操作系统分配端口号
接近 2 年之前 回复
snowyli_1989
snowyli_1989   2017.11.28 18:22

楼主解决了吗?
我也遇到这个问题,实际报错的并不是bind这个方法,跟绑定什么端口没关系,在获取实例的时候就报错了。sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) 也就是这一行。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!