ping_thread, prefer ipv4 first

This commit is contained in:
King's Way 2021-06-18 19:18:51 +08:00
parent 270c45aead
commit 05f9784b1e
2 changed files with 34 additions and 12 deletions

@ -14,7 +14,8 @@ USER = "s01"
PORT = 35601
PASSWORD = "USER_DEFAULT_PASSWORD"
INTERVAL = 1
PORBEPORT = 80
PROBEPORT = 80
PROBE_PROTOCOL_PREFER = "ipv4" # ipv4, ipv6
PING_PACKET_HISTORY_LEN = 100
CU = "cu.tz.cloudcpp.com"
CT = "ct.tz.cloudcpp.com"
@ -121,7 +122,7 @@ def ip_status():
ip_check = 0
for i in [CU, CT, CM]:
try:
socket.create_connection((i, PORBEPORT), timeout=1).close()
socket.create_connection((i, PROBEPORT), timeout=1).close()
except:
ip_check += 1
if ip_check >= 2:
@ -163,13 +164,23 @@ def _ping_thread(host, mark, port):
lostPacket = 0
packet_queue = Queue(maxsize=PING_PACKET_HISTORY_LEN)
IP = host
if host.count(':') < 1: # if not plain ipv6 address, means ipv4 address or hostname
try:
if PROBE_PROTOCOL_PREFER == 'ipv4':
IP = socket.getaddrinfo(host, None, socket.AF_INET)[0][4][0]
else:
IP = socket.getaddrinfo(host, None, socket.AF_INET6)[0][4][0]
except Exception:
pass
while True:
if packet_queue.full():
if packet_queue.get() == 0:
lostPacket -= 1
try:
b = timeit.default_timer()
socket.create_connection((host, port), timeout=1).close()
socket.create_connection((IP, port), timeout=1).close()
pingTime[mark] = int((timeit.default_timer()-b)*1000)
packet_queue.put(1)
except:
@ -212,7 +223,7 @@ def get_realtime_date():
kwargs={
'host': CU,
'mark': '10010',
'port': PORBEPORT
'port': PROBEPORT
}
)
t2 = threading.Thread(
@ -220,7 +231,7 @@ def get_realtime_date():
kwargs={
'host': CT,
'mark': '189',
'port': PORBEPORT
'port': PROBEPORT
}
)
t3 = threading.Thread(
@ -228,7 +239,7 @@ def get_realtime_date():
kwargs={
'host': CM,
'mark': '10086',
'port': PORBEPORT
'port': PROBEPORT
}
)
t4 = threading.Thread(

@ -15,7 +15,8 @@ USER = "s01"
PORT = 35601
PASSWORD = "USER_DEFAULT_PASSWORD"
INTERVAL = 1
PORBEPORT = 80
PROBEPORT = 80
PROBE_PROTOCOL_PREFER = "ipv4" # ipv4, ipv6
PING_PACKET_HISTORY_LEN = 100
CU = "cu.tz.cloudcpp.com"
CT = "ct.tz.cloudcpp.com"
@ -106,7 +107,7 @@ def ip_status():
ip_check = 0
for i in [CU, CT, CM]:
try:
socket.create_connection((i, PORBEPORT), timeout=1).close()
socket.create_connection((i, PROBEPORT), timeout=1).close()
except:
ip_check += 1
if ip_check >= 2:
@ -148,13 +149,23 @@ def _ping_thread(host, mark, port):
lostPacket = 0
packet_queue = Queue(maxsize=PING_PACKET_HISTORY_LEN)
IP = host
if host.count(':') < 1: # if not plain ipv6 address, means ipv4 address or hostname
try:
if PROBE_PROTOCOL_PREFER == 'ipv4':
IP = socket.getaddrinfo(host, None, socket.AF_INET)[0][4][0]
else:
IP = socket.getaddrinfo(host, None, socket.AF_INET6)[0][4][0]
except Exception:
pass
while True:
if packet_queue.full():
if packet_queue.get() == 0:
lostPacket -= 1
try:
b = timeit.default_timer()
socket.create_connection((host, port), timeout=1).close()
socket.create_connection((IP, port), timeout=1).close()
pingTime[mark] = int((timeit.default_timer() - b) * 1000)
packet_queue.put(1)
except:
@ -193,7 +204,7 @@ def get_realtime_date():
kwargs={
'host': CU,
'mark': '10010',
'port': PORBEPORT
'port': PROBEPORT
}
)
t2 = threading.Thread(
@ -201,7 +212,7 @@ def get_realtime_date():
kwargs={
'host': CT,
'mark': '189',
'port': PORBEPORT
'port': PROBEPORT
}
)
t3 = threading.Thread(
@ -209,7 +220,7 @@ def get_realtime_date():
kwargs={
'host': CM,
'mark': '10086',
'port': PORBEPORT
'port': PROBEPORT
}
)
t4 = threading.Thread(