0

我正在通过 TCP/IP 套接字从外部硬件(Zigbee 接收器)接收数据流(46 字节)到 PC。然后通过使用 Python 编程,我试图从 TCP/IP 套接字接收到的数据流中提取消息。

我的 python 源代码和从数据流中提取的数据,在下面的链接中给出

https://docs.google.com/document/pub?id=1pYASqImWm4HkKrDbeal8fTBsh_GojBQLXixxbMQBlU

正如我们所知“TCP/IP 对数据流进行操作,而不是通过数据包”

如果我在单个流中收到完整的数据包,我可以提取数据。但有时,在两个数据流中接收到单个数据包(损坏),那时我无法从流中提取我的消息。

我对python编程不太熟悉,所以任何人都可以帮我解决这个问题。

我正在寻找任何好的示例(编程)来管理 TCP/IP 套接字上传入数据流的中断,方法是将这些流作为完整数据包存储在缓冲区中,然后使用分隔符提取消息。

提前致谢

4

1 回答 1

1

这应该有效:

import socket

def connect(addr):
    con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    con.connect(addr)
    return con 

addr = ('127.0.0.1', 7777)
client_socket = connect(addr)
packet_size = 46
data = ""
while True:
    while len(data) < packet_size:
        d = client_socket.recv(1024)
        if not d:
            client_socket.close()
            client_socket = connect(addr) 
        else:
            data += d
    packet, data = data[:packet_size], data[packet_size:]
    lqi = ord(packet[27])
    ...
于 2012-07-10T11:19:04.237 回答