Files
TIMERS/timer_app.py

92 lines
3.0 KiB
Python

import socket
import tkinter as tk
import threading
import re
def on_validate(P):
# Проверка на соответствие шаблону IP-адреса (допускаются промежуточные неполные значения)
pattern = (
r"^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){0,3}"
r"(25[0-5]|2[0-4]\d|[01]?\d\d?)?$"
)
return re.match(pattern, P) is not None
class ServerConnectionApp:
def __init__(self, root):
self.root = root
self.root.title("Server Connection App")
# GUI setup
self.setup_gui()
# Server connection
self.client_socket = None
def setup_gui(self):
self.ip_label = tk.Label(self.root, text="IP Address:")
self.ip_label.grid(row=0, column=0)
self.ip_entry = tk.Entry(self.root)
self.ip_entry.grid(row=0, column=1)
self.ip_entry.insert(0, "127.0.0.1") # Default IP address (localhost)
self.port_label = tk.Label(self.root, text="Port:")
self.port_label.grid(row=1, column=0)
self.port_entry = tk.Entry(self.root)
self.port_entry.grid(row=1, column=1)
self.port_entry.insert(0, "12345") # Default port
self.connect_button = tk.Button(self.root, text="Connect", command=self.initiate_connection)
self.connect_button.grid(row=2, column=0, columnspan=2)
self.status_label = tk.Label(self.root, text="")
self.status_label.grid(row=3, column=0, columnspan=2)
def initiate_connection(self):
ip = self.ip_entry.get()
port = int(self.port_entry.get())
# Create a thread to avoid blocking the GUI
connection_thread = threading.Thread(target=self.connect_to_server, args=(ip, port))
connection_thread.daemon = True
connection_thread.start()
def connect_to_server(self, ip, port):
try:
self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client_socket.connect((ip, port))
self.status_label.config(text="Connected successfully.")
# Consume the data and print it to the console
self.listen_to_server()
except Exception as e:
self.status_label.config(text=f"Connection failed: {e}")
def listen_to_server(self):
try:
while True:
data = self.client_socket.recv(1024)
if data:
print("Received from server:", data.decode())
else:
# Connection is closed
print("Server has closed the connection.")
self.client_socket.close()
break
except Exception as e:
print(f"Error while listening to the server: {e}")
if self.client_socket:
self.client_socket.close()
# Create the Tkinter window
root = tk.Tk()
# Create an instance of the app
app = ServerConnectionApp(root)
# Start the Tkinter main event loop
root.mainloop()