Как принять tcp пакет с флагом PSH от сервера

Я делаю API к стороннему приложению. Это приложение отправляет следующие запросы:

введите сюда описание изображения

Первые 2 пакета я успешно отправляю и получаю ответ, а вот потом сервер сам отправляет мне пакет и тут socket.recv() его не видит.

Я не очень понимаю как это происходит и как мне получить PSH пакет от сервера.

Мой код:

tcp = TCPConnection()
tcp.connect(host, port)
tcp.send(b'00000017000f70622e4c6f6262794c697374524551000000000807')
tcp.readlines()
tcp.send(b'00000025001f70622e48616c6c4f6646616d654c6174657374596561724d6f6e746852455100000000')
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.readlines()
tcp.close()
class TCPConnection:
    def __init__(self, sock=None):
        if sock is None:
            self.sock = socket.socket(
                            socket.AF_INET, socket.SOCK_STREAM)
        else:
            self.sock = sock

    def decode_hexstring(self, hexstring):
        decoded = ''
        for i in range(0, len(hexstring), 2):
            b = hexstring[i:i+2]
            b = b.decode() # it's a byte-string
            try:
                c = bytes.fromhex(b).decode()
            except: # the last char might be missing
                c = '☐'
            decoded = decoded + c
        return decoded

    def connect(self, host, port):
        try:
            self.sock.connect((host, port))
            print('Successful Connection')
        except:
            print('Connection Failed')

    def readlines(self):
        data = self.sock.recv(1024)
        print(data)
    
    def send(self, bytehexdata: str):
        data = self.decode_hexstring(bytehexdata)
        self.sock.send(str.encode(data))
    
    def close(self):
        self.sock.close()
    
    def listen(self, cons: int):
        self.sock.listen(cons)
    
    def bind(self, host, port):
        self.sock.bind((host, port))
    
    def accept(self):
        return self.sock.accept()
    
    def get_my_ip(self):
        hostname = socket.gethostname()
        return socket.gethostbyname(hostname)

Вот что я получаю: введите сюда описание изображения

Меня еще смущает то, что у меня после каждого доставленного пакета отправляется флаг FIN


Ответы (0 шт):