Python 以太网设备与套接字通信。这个普通班行吗?
我正在尝试编写一个类,用于使用套接字协议与硬件通信。该类相当通用,因此我可以为网络上继承通用通信协议类的每个设备编写自定义类 我是套接字编程新手,不知道是否有人可以建议对以下代码进行提示或改进 我特别想澄清: 1) 套接字只存在于一个事务中,然后在设备返回完整消息后被销毁,这是真的吗。因此,我需要打开和关闭套接字方法 2) 我的读数是未知的信息长度。pySocket文档建议在消息中添加一个长度指示器,尽管我正在使用的硬件不允许我修改它发送数据的方式。因此,我认为目前读取最大1KB的数据似乎是合理的,但如果需要,我可以在以后增加Python 以太网设备与套接字通信。这个普通班行吗?,python,sockets,serversocket,ethernet,Python,Sockets,Serversocket,Ethernet,我正在尝试编写一个类,用于使用套接字协议与硬件通信。该类相当通用,因此我可以为网络上继承通用通信协议类的每个设备编写自定义类 我是套接字编程新手,不知道是否有人可以建议对以下代码进行提示或改进 我特别想澄清: 1) 套接字只存在于一个事务中,然后在设备返回完整消息后被销毁,这是真的吗。因此,我需要打开和关闭套接字方法 2) 我的读数是未知的信息长度。pySocket文档建议在消息中添加一个长度指示器,尽管我正在使用的硬件不允许我修改它发送数据的方式。因此,我认为目前读取最大1KB的数据似乎是合理
class SocketTalker(object):
def __init__(self, ip, port, timeout=3):
self.ip = ip
self.port = port
self.timeout = timeout
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(self.timeout)
def open_socket(self):
self.sock.connect((self.ip, self.port))
def close_socket(self):
self.sock.shutdown()
self.sock.close()
def query(self, command):
self.open_socket()
self.sock.send(command)
data = self.sock.recv(1024) # Wait for up to 1 kbyte of data to be returned (if fewer bytes returned and the instrument signals message complete, the socket terminates and this data is returned)
self.close_socket() # Double check the socket is closed after use
return data
谢谢