Twisted サーバーと通常のソケット クライアントを作成しました (クライアントには Twisted がインストールされていないため)。サーバーコードの一部は次のとおりです
import time
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
class Server:
def method(self, addr,port,sock):
command = 'tcpdump -i any \'src ' +str(addr) +' and port 80\' -w '+str(addr)+ '_download_' +str(time.time())+'.txt &'
os.system(command)
sock.transport.write('ok')
class Echo(Protocol):
def dataReceived(self,data):
s = Server()
#extract client ip from the method self.transport.getPeer()
#extract client port from the data received
print data
s.method(client_ip, port, self)#the client ip and port are extracted from the request received
def main():
f = Factory()
f.protocol = Echo
reactor.listenTCP(33456, f)
reactor.run()
if __name__ == '__main__':
main()
このメソッドは最初のクライアント リクエストに対しては機能しますが、2 番目のリクエストでは次のエラーで失敗します
exceptions.AttributeError: 'datetime.timedelta' object has no attribute 'time'
コマンドの行番号とともに(ファイル名を取得するために time.time() メソッドを使用しています)
誰かが私が間違っていることについて正しい方向に私を向けることができますか? またはなぜエラーを投げているのですか?
編集:
ここに完全なコードを投稿していませんが、トレースバックは
Unhandled Error
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
return context.call({ILogContext: newCtx}, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 586, in _doReadOrWrite
why = selectable.doRead()
File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 199, in doRead
rval = self.protocol.dataReceived(data)
File "dc.py", line 191, in dataReceived
dc.multiQ(client_ip,multiq_port,self)
File "dc.py", line 73, in multiQ
command = 'tcpdump -i any \'src ' +str(addr) +' and port 80\' -w '+str(addr)+ '_download_' +str(time.time())+'.txt &'#change any to eth0
exceptions.AttributeError: 'datetime.timedelta' object has no attribute 'time'