на отправляющей стороне. Попробуйте отключить это:

наилучший подход для обработки соединения с сокетом, где мне нужно VARdata закончить переводом строки\n? Я использую код ниже, но иногдаtcp пакеты получаютфрагментированный и это занимает много времени, чтобы соответствоватьdata.endswith("\n"), Я также пробовал другие подходы, такие как сохранение последней строки, если она не заканчивается\n и добавить его вdataна следующем цикле. но это также не работает, потому что несколько пакетов разбиваются на части, а первая и вторая части не совпадают. У меня нет контроля над другим концом, он в основном отправляет несколько строк, которые заканчиваются\r\n.

Любое предложение будет приветствоваться, так как я не очень разбираюсь в сокетных соединениях.

def receive_bar_updates(s):
    global all_bars
    data = ''
    buffer_size = 4096
    while True:
        data += s.recv(buffer_size)
        if not data.endswith("\n"):
            continue
        lines = data.split("\n")
        lines = filter(None, lines)
        for line in lines:
            if line.startswith("BH") or line.startswith("BC"):
                symbol = str(line.split(",")[1])
                all_bars[symbol].append(line)
                y = Thread(target=proccess_bars, kwargs={'symbol': symbol})
                y.start()
        data = ""

Пример "нормальный" data:

line1\r\n
line2\r\n
line3\r\n

Примерфрагментированный data:

line1\r\n
line2\r\n
lin

Ответы на вопрос(4)

Ваш ответ на вопрос