First commit
This commit is contained in:
42
client/TCPClient.py
Normal file
42
client/TCPClient.py
Normal 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()
|
||||
Reference in New Issue
Block a user