Advertisement
EdmundC

pingclient

Sep 28th, 2024 (edited)
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. import socket
  2. import threading
  3.  
  4. # Function to receive messages from the server (same as before)
  5. def receive_messages(client_socket):
  6.     while True:
  7.         try:
  8.             message = client_socket.recv(1024).decode('utf-8')
  9.             print(message)
  10.         except:
  11.             print("Connection lost!")
  12.             client_socket.close()
  13.             break
  14.  
  15. # Function to send messages to the server (same as before)
  16. def send_message(client_socket):
  17.     while True:
  18.         message = input("")
  19.         client_socket.send(message.encode('utf-8'))
  20.  
  21. # Function to search for the server's IP using UDP broadcast
  22. def discover_server_ip():
  23.     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  24.     udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
  25.     udp_socket.bind(("", 37020))  # Listen on port 37020 for broadcasts
  26.     print("Listening for the server broadcast...")
  27.     while True:
  28.         message, addr = udp_socket.recvfrom(1024)
  29.         message = message.decode('utf-8')
  30.         if message.startswith("ServerIP:"):
  31.             return message.split(":")[1]
  32.  
  33. # Client setup (find the server automatically)
  34. def start_client():
  35.     server_ip = discover_server_ip()  # Automatically get server's IP
  36.     print(f"Discovered server at {server_ip}")
  37.    
  38.     client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  39.     client_socket.connect((server_ip, 5555))  # Connect to the discovered server IP
  40.    
  41.     threading.Thread(target=receive_messages, args=(client_socket,)).start()
  42.     threading.Thread(target=send_message, args=(client_socket,)).start()
  43.  
  44. start_client()
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement