[Twisted-Python] Streaming File Transfer Protocol?
Darren Govoni
darren at ontrenet.com
Wed Feb 10 14:23:19 EST 2010
>From what I learned in other posts, the dataReceived(self, data): in the
Echo server
will get called with out-of-order data/bytes from the client. Of course,
I could be misinformed,
but what I understood before was that in this type of Protocol, I would
have to re-order
and re-assemble the bytes. And I'm trying to avoid that, since of
course, TCP already does it.
But like I said, I could have been misinformed because it seems pretty
basic to write 1,2,3
to a server and have it received 1,2,3, guaranteed.
On Wed, 2010-02-10 at 14:08 -0500, Mark Bailey wrote:
> How about:
>
>
> # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
> # See LICENSE for details.
>
>
> """
> An example client. Run simpleserv.py first before running this.
> """
>
> from twisted.internet import reactor, protocol
>
>
> # a client protocol
>
> class EchoClient(protocol.Protocol):
> """Once connected, send a message, then print the result."""
>
> def connectionMade(self):
> self.transport.write("hello, world!")
>
> def dataReceived(self, data):
> "As soon as any data is received, write it back."
> print "Server said:", data
> self.transport.loseConnection()
>
> def connectionLost(self, reason):
> print "connection lost"
>
> class EchoFactory(protocol.ClientFactory):
> protocol = EchoClient
>
> def clientConnectionFailed(self, connector, reason):
> print "Connection failed - goodbye!"
> reactor.stop()
>
> def clientConnectionLost(self, connector, reason):
> print "Connection lost - goodbye!"
> reactor.stop()
>
>
> # this connects the protocol to a server runing on port 8000
> def main():
> f = EchoFactory()
> reactor.connectTCP("localhost", 8000, f)
> reactor.run()
>
> # this only runs if the module was *not* imported
> if __name__ == '__main__':
> main()
>
>
> -------------------------
>
>
> # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
> # See LICENSE for details.
>
>
> from twisted.internet import reactor, protocol
>
>
> class Echo(protocol.Protocol):
> """This is just about the simplest possible protocol"""
>
> def dataReceived(self, data):
> "As soon as any data is received, write it back."
> self.transport.write(data)
>
>
> def main():
> """This runs the protocol on port 8000"""
> factory = protocol.ServerFactory()
> factory.protocol = Echo
> reactor.listenTCP(8000,factory)
> reactor.run()
>
> # this only runs if the module was *not* imported
> if __name__ == '__main__':
> main()
>
> -----
>
> Mark
>
>
>
> On Wed, Feb 10, 2010 at 1:54 PM, Darren Govoni <darren at ontrenet.com>
> wrote:
>
> Hey Mark,
> Yeah, that's what I want, but in the 'twisted' way. I can
> write socket servers, etc. But didn't notice a good example of
> how to do this in Twisted (sparing me the socket programming),
> until I found this old message[1] with the classes I think
> might work.
>
> [1]
> http://twistedmatrix.com/pipermail/twisted-python/2007-July/015738.html
>
> Darren
>
> On Wed, 2010-02-10 at 13:36 -0500, Mark Bailey wrote:
>
> > Hi Darren:
> >
> > Why not use TCP? You can send the length of the file at the
> > beginning so you know how many bytes to listen for.
> > TCP guarantees delivery and ordering.
> >
> > Mark
> >
> > On Wed, Feb 10, 2010 at 12:22 PM, Darren Govoni
> > <darren at ontrenet.com> wrote:
> >
> > Hi,
> > Is there an existing protocol that can provide the
> > following?
> >
> > - Accept stream binary data FROM a client (e.g. very
> > large file transfer)
> > - Receive data IN ORDER (i.e. stream. not out of
> > order random packets)
> >
> > I want to stream FROM a client to the protocol
> > server and have the
> > server process the stream bytes incrementally so it
> > doesn't have
> > to store or write the entire data stream (too
> > large).
> >
> > I looked at FileTransferServer and Client, but I'm
> > not sure it provides
> > what I need.
> >
> > Any tips appreciated!
> > Darren
> >
> > _______________________________________________
> > Twisted-Python mailing list
> > Twisted-Python at twistedmatrix.com
> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> >
> >
> >
> >
> > _______________________________________________
> > Twisted-Python mailing list
> > Twisted-Python at twistedmatrix.com
> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
>
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20100210/e6c1a5fc/attachment-0001.htm
More information about the Twisted-Python
mailing list