python socket 获取目的ip getsockopt

是一个需求需要获取连接socket的目的ip,不是本机ip,传递过来的流量的目的ip不是本机ip
研究得知需要使用 getsockopt 函数

具体实现


from socket import *
SO_ORIGINAL_DST = 80
s = socket(AF_INET, SOCK_STREAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(('192.168.0.2', 1234))
s.listen(1)
conn, addr = s.accept()

dst = conn.getsockopt(SOL_IP, SO_ORIGINAL_DST, 16)
srv_port, srv_ip = struct.unpack("!2xH4s8x", dst)
print "original %s:%d" % (inet_ntoa(srv_ip), srv_port)

你可能感兴趣的:(Python,python)