Я нашел this и использую его как базу, но он не работал прямо из коробки. Моя цель - также рассматривать это как пакет вместо утилиты командной строки, поэтому мои изменения кода отражают это.Внедрение Netcat в Python
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
Мой код читает первую строку, а затем я получаю сообщение об ошибке сказав, что соединение временно недоступно, и он не получает вторую строчку. Если я изменю его на блокировку, он просто блокируется и никогда не возвращается. Есть предположения?
Добавление строки выключения к моему исходному коду заставило ее работать, и я займусь из своего кода, чтобы обрезать свой код. – unholysampler
У меня проблема, когда мой mac os не отправляет пакеты до тех пор, пока я не отключу соединение. Есть ли какие-либо способы, потому что соединение, которое у меня не может быть сделано снова. –
Боб, вы должны подумать о том, чтобы нажать «Задать вопрос» и спросить об этом, если вы этого еще не сделали. –