Python - sendto中的OSError(字节,(ip,端口))

时间:2017-03-07 15:17:07

标签: python sockets network-programming scapy raw-sockets

我在编写原始套接字时遇到了很多麻烦。 虽然我的实现到现在还很大,但我认为解决以下代码的问题,也可以解决我的整个实现:

from scapy.all import *
import socket


sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
src_port = 12345 # any random port > 1024 i guess ...
dst_port = 80 # should be tcp, as http runs over it in the end
dst_addr = socket.gethostbyname("www.google.de") 

# ensuring that kernel will not create its own ip header
sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, True)

# create a packet to send using scapy
packet = IP(dst = dst_addr)/TCP(dport = dst_port)

sock.sendto(bytes(packet), (dst_addr, 80))

我收到以下错误:

OS error: [Errno 22] Invalid argument

由以下人员提出:

sock.sendto(bytes(packet), (dst_addr, 80))

有人有线索,为什么这不起作用?

- 编辑 -

我正在研究MacOSX。 我已经注意到了这个问题:Raw sockets and sendto in python 但是,我希望有人有答案,因为旧问题缺乏一个好的答案,而且也是4岁左右。

0 个答案:

没有答案