我发现了这个,并将其用作我的基础,但是它并不能直接使用。我的目标也是将其作为一个包来处理而不是命令行实用程序,因此我的代码更改将反映出这一点。
class Netcat:
def __init__(self, hostname, port):
self.hostname = hostname
self.port = port
def send(self, content):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((self.hostname, self.port))
self.socket.setblocking(0)
result = '';
read_ready, write_ready, in_error = select.select([self.socket], [], [self.socket], 5)
if(self.socket.sendall(content) != None):
return
while(1):
buffer = ''
try:
buffer = self.socket.recv(128)
while(buffer != ''):
result += buffer
try:
buffer = self.socket.recv(128)
except socket.error as err:
print (err, type(err))
buffer = ''
if(buffer == ''):
break
except socket.error as err:
print (err, type(err))
if(buffer == ''):
break
return result
当我向我的设备发送基本命令时,它返回以下内容。
50PMA-019 Connection Open
Atten #1 = 63dB
我的代码读取了第一行,但是接着我收到一个错误提示说连接暂时不可用,并且无法获取第二行。如果我将其更改为阻塞模式,它只会一直阻塞而不会返回结果。有什么想法吗?
content
是一个编码字符串吗?如果我有一个包含多列并需要发送记录的 .csv 文件,我该如何使用这个netcat()
函数? - Cherry Wu