我找到了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 2009-12-15 18:36:50
我有問題,我的mac os不會發送數據包,直到我關閉連接。有沒有辦法解決,因爲我不能再次建立連接。 – 2016-03-07 17:25:50
鮑勃,你應該考慮點擊提問並詢問這個,如果你還沒有。 – 2016-03-11 23:17:44