我的客户机程序使用python套接字api只接受来自服务器的一个字节

我的客户机程序使用python套接字api只接受来自服务器的一个字节,python,sockets,python-sockets,cnc,Python,Sockets,Python Sockets,Cnc,我正试图从CNC HAAS控制器获取机器数据。它有一个名为MDC的内置软件,充当服务器。我需要编写一个客户端程序向MDC的IP和端口号发送请求。当我发送和接收请求时,服务器似乎一次只发送一个字节,因此我一次只能捕获一个字节,其他字节则丢失。如何获取整个数据。我正在使用Python的套接字模块 根据前面关于堆栈溢出的问题,我使用了while循环,但似乎服务器正在发送数据并关闭连接,当我的客户端程序再次循环时,其他数据丢失,连接关闭 # Import socket module import so

我正试图从CNC HAAS控制器获取机器数据。它有一个名为MDC的内置软件,充当服务器。我需要编写一个客户端程序向MDC的IP和端口号发送请求。当我发送和接收请求时,服务器似乎一次只发送一个字节,因此我一次只能捕获一个字节,其他字节则丢失。如何获取整个数据。我正在使用Python的套接字模块

根据前面关于堆栈溢出的问题,我使用了while循环,但似乎服务器正在发送数据并关闭连接,当我的客户端程序再次循环时,其他数据丢失,连接关闭

# Import socket module 
import socket  
# Create a socket object 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)          

# Define the port on which you want to connect 
port = 5051                

# connect to the server on local computer 
s.connect(('192.168.100.3', port)) 

#sending this message will give me the status of the CNC machine


s.send(("?Q500").encode()) 



d= (s.recv(1024)).decode() 


print(d)
s.close()
预期产出为:

>PROGRAM, MDI, IDLE, PARTS, 380

我得到的输出是
,它只是实际输出的第一个字符(字节)。

多一点代码可能会有帮助,但我会尝试使用您提供的内容进行hlp

你可以试试这个

s.send(("?Q500").encode("utf-8")) # just add an encoding

fullData = ""

while True:
    d = (s.recv(1024)).decode("utf-8")
    fullData += d

    if not d:
        print(fullData)
        s.close()
        break

多一点代码可能会有帮助,但我会尝试用你给我们的东西来帮助你

你可以试试这个

s.send(("?Q500").encode("utf-8")) # just add an encoding

fullData = ""

while True:
    d = (s.recv(1024)).decode("utf-8")
    fullData += d

    if not d:
        print(fullData)
        s.close()
        break

如果您想了解更多信息,我强烈推荐sentdex的socket教程感谢您的快速回复,但在第二次进入循环后,它被卡住了,我认为它无法连接到机器,bcz服务器似乎已关闭连接,并且可能发送并丢失了剩余的数据。我不知道这会有什么帮助,但我用PUTTY软件做了同样的事情,我只需键入?Q500,然后在终端中返回完整的消息。我试着看putty的源代码,因为我是编程新手,对我来说有点乱。我已经进入了完整的课程。只需连接、发送和接收。如果您想了解更多信息,我强烈推荐sentdex的socket教程感谢您的快速回复,但在第二次进入循环后,它被卡住了,我认为它无法连接到机器,bcz服务器似乎已关闭连接,可能剩余的数据已发送并丢失。我不知道这会有什么帮助,但我用PUTTY软件做了同样的事情,我只需键入?Q500,然后在终端中返回完整的消息。我试着看putty的源代码,因为我是编程新手,对我来说有点乱。我已经进入了完整的课程。只需连接、发送和接收。就这样