我尝试创建一种客户端监视器,类似于终端,通过以太网从串行设备接收数据。我试图使用Python的套接字,但问题出现在我创建连接时。我应该只接收来自服务器的一个消息,但我得到了整个消息,但是分成两个数据包,就像这样:
期望接收的消息:
期望接收的消息:
b'-- VOID MESSAGE--'
接收到消息:
b'-- VOID'
b' MESSAGE--'
我不知道这是否是缓冲区大小、解码或其他任何功能的问题。
import socket
TCP_IP = '192.168.#.#'
TCP_PORT = ###
BUFFER_SIZE = 1024
data1=' '
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
while(1):
data = s.recv(BUFFER_SIZE)
print(data.decode('ASCII'))
s.close()
我已经尝试了一些编解码器选项,如UTF-8、UTF-16和ASCII,但仍然得到相同的结果。
这个函数帮助我解决了问题。
while(1):
cadena += s.recv(1)
if (((cadena)[i])=='\n'):
print(cadena.decode('ASCII'))
cadena=b''
i=-1
i+=1