Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- class Network:
- def __init__(self, limit=65565):
- # the public network interface
- self.HOST = socket.gethostbyname(socket.gethostname())
- try:
- # create a raw socket and bind it to the public interface
- s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
- except s.error as err:
- print('socket creation failed with error{}'.format(err))
- # prevent socket from being left in TIME_WAIT state, enabling reuse
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- s.bind((self.HOST, 0))
- # Include IP headers
- s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
- # receive all packages
- s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
- self.socket = s
- self.limit = limit
- def get_raw_data(self):
- raw_index = 0
- return self.socket.recvfrom(self.limit)[raw_index]
- def close(self):
- self.socket.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
- self.socket.close()
Advertisement
Add Comment
Please, Sign In to add comment