Python3:套接字接收的同时

Python3:套接字接收的同时

问题描述:

获取所有数据我有这样的代码:Python3:套接字接收的同时

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。这两个线程同时工作,但使用相同的连接(声明的静态连接)。有时,这两个线程同时发送数据或者在几毫秒之间至少有几个延迟。但问题是,Python3同时接收这两种不同的数据,就像一行数据一样。

例如:

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(客户端或服务器)

希望这个例子和代码足够丰富。

这是TCP等流媒体服务的预期行为。

TCP无法传输超过一个字节的任何消息。

如果你想传输任何长度超过一个字节的结构,你需要一个在TCP之上的协议 - 也许在你的字符串末尾放置一个null或者什么的,然后发送它。在接收端,连接所有收到的字节,直到找到空。

+0

而.....完成!谢谢 :) – xangr