first commit
This commit is contained in:
92
timer_app.py
Normal file
92
timer_app.py
Normal file
@@ -0,0 +1,92 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user