demo_socket_01.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. # socket 监测远程服务器是否在线
  3. import socket
  4. import time
  5. def check_connection(ip, port, timeout=3):
  6. try:
  7. with socket.create_connection((ip, port), timeout):
  8. return True
  9. except OSError:
  10. return False
  11. def measure_delay(ip, port, timeout=3):
  12. start_time = time.time()
  13. try:
  14. with socket.create_connection((ip, port), timeout):
  15. # 发送一个简单的请求,例如 HTTP 请求的开始部分
  16. message = "GET / HTTP/1.1\r\nHost: {}\r\n\r\n".format(ip)
  17. sock = socket.create_connection((ip, port), timeout)
  18. sock.sendall(message.encode())
  19. # 接收响应
  20. sock.recv(4096)
  21. # 计算总的往返时间
  22. end_time = time.time()
  23. return (end_time - start_time) * 1000 # 转换为毫秒
  24. except OSError as e:
  25. print(f"Error: {e}")
  26. return None
  27. # 远程服务器的 IP 地址和端口
  28. remote_ip = 'https://dis.dt-ok.cn' # 替换为远程服务器的 IP 地址
  29. remote_port = 8888 # 替换为远程服务器的端口
  30. # 循环10次,每次间隔1秒
  31. for i in range(10):
  32. delay = measure_delay(remote_ip, remote_port)
  33. if delay is not None:
  34. print(f"Attempt {i + 1}: Connection is active. Delay: {delay:.2f} ms")
  35. else:
  36. print(f"Attempt {i + 1}: Connection is not active.")
  37. time.sleep(1) # 等待1秒