Ich fand this und benutze es als meine Basis, aber es funktionierte nicht direkt aus der Box. Mein Ziel ist es auch, es als ein Paket statt eines Befehlszeilendienstprogramms zu behandeln, so dass meine Codeänderungen das widerspiegeln.Netcat-Implementierung in 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
Wenn ich einen Basisbefehl an mein Gerät sende, gibt es Folgendes zurück.
50PMA-019 Connection Open
Atten #1 = 63dB
Mein Code liest die erste Zeile, aber dann bekomme ich eine Fehlermeldung, dass die Verbindung vorübergehend nicht verfügbar ist und es nicht die zweite Linie bekommen. Wenn ich es zum Blockieren ändere, blockiert es einfach und kehrt nie zurück. Irgendwelche Gedanken?
Das Hinzufügen der Abschaltlinie zu meinem ursprünglichen Code hat es funktioniert und ich werde von Ihrem Code ausleihen, um meinen Code zu verkleinern. – unholysampler
Ich habe das Problem, wo mein Mac OS Pakete nicht sendet, bis ich die Verbindung herunterfahre. Gibt es irgendwelche Möglichkeiten, weil die Verbindung, die ich habe, nicht wieder hergestellt werden kann. –
Bob, du solltest in Erwägung ziehen, Frage zu stellen und diese Frage zu stellen, falls du es noch nicht getan hast. –