python检测远程udp端口是否打开详解编程语言
2023-06-13 09:20:24 时间
sock_udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock_udp.sendto("abcd...",ADDR)
sock_udp.close()
except:
pass
def icmp_receiver(ip,port):
icmp = socket.getprotobyname("icmp")
try:
sock_icmp = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
except socket.error, (errno, msg):
if errno == 1:
# Operation not permitted
msg = msg + (
" - Note that ICMP messages can only be sent from processes"
" running as root."
raise socket.error(msg)
raise # raise the original error
sock_icmp.settimeout(3)
try:
recPacket,addr = sock_icmp.recvfrom(64)
except:
queue.put(True)
return
icmpHeader = recPacket[20:28]
icmpPort = int(recPacket.encode(hex)[100:104],16)
head_type, code, checksum, packetID, sequence = struct.unpack(
"bbHHh", icmpHeader
sock_icmp.close()
if code == 3 and icmpPort == port and addr[0] == ip:
queue.put(False)
return
def checker_udp(ip,port):
thread_udp = threading.Thread(target=udp_sender,args=(ip,port))
thread_icmp = threading.Thread(target=icmp_receiver,args=(ip,port))
thread_udp.daemon= True
thread_icmp.daemon = True
thread_icmp.start()
time.sleep(0.1)
thread_udp.start()
thread_icmp.join()
thread_udp.join()
return queue.get(False)
if __name__ == __main__:
import sys
print checker_udp(sys.argv[1],int(sys.argv[2]))
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8413.html
cjavapython相关文章
- python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」
- Python 生成随机数_python 随机字符串
- Python算法:如何解决回文索引问题详解编程语言
- python连接Oracle数据库的代码详解编程语言
- 一个python自定义的加密解密函数详解编程语言
- Python动态生成中文验证码详解编程语言
- python端口扫描程序详解编程语言
- python代码定时同步本机的北京时间详解编程语言
- Python socket编程详解编程语言
- python_day18-19_面向对象编程1详解编程语言
- Python_day11_闭包函数详解编程语言
- python学习 异常详解编程语言
- Python基础语法详解编程语言
- python的协程和异步io【select|poll|epoll】详解编程语言
- python操作memcache
- python字符串split的用法分享