First commit

This commit is contained in:
Yui
2026-05-02 20:54:01 -03:00
commit 1f6b38c894
9 changed files with 244 additions and 0 deletions

42
client/TCPClient.py Normal file
View File

@@ -0,0 +1,42 @@
import socket as s
from SocketClient import SocketClient
from select import select
class TCPClient(SocketClient):
def Connect(self) -> bool:
self.socket = s.socket(s.AF_INET, s.SOCK_STREAM)
try:
self.socket.connect((self.ip, self.port))
except ConnectionRefusedError:
self.logger.fatal("TCP_FATAL_CONNECT %s:%d" % (self.ip, self.port))
return False
self.socket.setblocking(False)
return True
def Reconnect(self) -> bool:
self.socket.close()
return self.Connect()
def Send(self, data: str):
try:
self.socket.sendall(data.encode())
self.logger.info("TCP_SENT %s" % data)
self.Receive()
except Exception as ex:
self.logger.fatal("TCP_FATAL_SEND %s" % ex)
def Receive(self):
(incoming, _, _) = select([self.socket], [], [], 0)
if incoming:
try:
data = self.socket.recv(1024)
if not data:
self.socket.close()
self.logger.error("TCP_NO_DATA")
return
self.logger.info("TCP_SUCCESS %s" % data.decode())
except InterruptedError as ex:
self.logger.error("TCP_FAIL %s" % ex)
self.Reconnect()