У меня есть этот код:Python3: Socket Receive получает все данные, в то же время
class SrvHandler(asyncore.dispatcher_with_send):
def handle_read(self):
data = self.recv(1024)
if data:
data = str(data, 'utf-8')
print("Received: " + data)
Теперь, у меня есть VBasic
приложения. Это приложение имеет 2 thread
. Этот два потока работает одновременно, но использует одно и то же соединение (статическое соединение объявлено). Иногда эти 2 потока отправляют данные одновременно или в аренду задерживают между миллисекундами. Но проблема в том, что Python3 получает эти 2 разных данных одновременно, как одна строка данных.
Например:
VBasic Thread 1: socket.write("Hello")
VBasic Thread 2: socket.write("12345")
Python3 Data:
Expected Result:
First recv: Hello
Second recv: 12345
Actual Result:
First recv: Hello12345
Почему Python3 действует как это? Что я могу сделать, чтобы предотвратить этот микс? В чем причина такого поведения? Это по дизайну? Как я могу предотвратить это? На python3 или VBasic (клиент или сервер)
Надейтесь, что этот пример и код достаточно информативны.
И ..... Сделано! Благодаря :) – xangr