tinyp2p - trying to get it to work

F

Fantus

Hello

I am doing a small research and I found this:

http://www.freedom-to-tinker.com/tinyp2p.html

I tried to get it to work. So far I managed to run it as a server using
a command:
> python tinyp2p.py haslo server 10.10.10.1 2233

It starts listening on a given port so I assume it works fine (I can
telnet from other machine to 10.10.10.1 on 2233)

Now when I try to run a client using following command:
> python tinyp2p.py haslo client http://10.10.10.1:2233 koniki

it gives me some strange output and erros:


Traceback (most recent call last):
File "tinyp2p.py", line 14, in ?
for url in pxy(ar[3]).f(pw(ar[3]),0,[]):
File "/usr/lib/python2.4/xmlrpclib.py", line 1096, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.4/xmlrpclib.py", line 1383, in __request
verbose=self.__verbose
File "/usr/lib/python2.4/xmlrpclib.py", line 1147, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib/python2.4/xmlrpclib.py", line 1286, in _parse_response
return u.close()
File "/usr/lib/python2.4/xmlrpclib.py", line 744, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: 'exceptions.TypeError:coercing to Unicode:
need string or buffer, list found'>



Can anybody help me to solve this? Please. I did browse google but found
nothing.

Regards
Fantus.
 
M

Marc Christiansen

Fantus said:
Hello

I am doing a small research and I found this:

http://www.freedom-to-tinker.com/tinyp2p.html [...]
Now when I try to run a client using following command:
python tinyp2p.py haslo client http://10.10.10.1:2233 koniki

it gives me some strange output and erros:


Traceback (most recent call last):
File "tinyp2p.py", line 14, in ?
for url in pxy(ar[3]).f(pw(ar[3]),0,[]):
File "/usr/lib/python2.4/xmlrpclib.py", line 1096, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.4/xmlrpclib.py", line 1383, in __request
verbose=self.__verbose
File "/usr/lib/python2.4/xmlrpclib.py", line 1147, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib/python2.4/xmlrpclib.py", line 1286, in _parse_response
return u.close()
File "/usr/lib/python2.4/xmlrpclib.py", line 744, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: 'exceptions.TypeError:coercing to Unicode:
need string or buffer, list found'>


Can anybody help me to solve this? Please. I did browse google but found
nothing.

I had a (not so quick) look. The code proves its point (i.e. writing a
very small p2p application is possible), but it is horrible. With only
one server, the code is broken; maybe it works using multiple servers, I
didn't test. A quick fix seems to be to change the line
pr() and [aug(s) for s in aug(pr()[0])]
to
pr() and [aug(s) for s in aug(pr()[0])] or pr([myU])

Please don't take tinyp2p.py as an example on writing python.

HTH Marc
 
F

Fantus

Marc Christiansen pisze:
Can anybody help me to solve this? Please. I did browse google but found
nothing.

I had a (not so quick) look. The code proves its point (i.e. writing a
very small p2p application is possible), but it is horrible. With only
one server, the code is broken; maybe it works using multiple servers, I
didn't test. A quick fix seems to be to change the line
pr() and [aug(s) for s in aug(pr()[0])]
to
pr() and [aug(s) for s in aug(pr()[0])] or pr([myU])

Please don't take tinyp2p.py as an example on writing python.

HTH Marc

It seems to be working! Respect.

I know this app is a bit messy but I couldnt't find anything else that
would implement p2p basics and wouldn't have hundrends or thousands of
lines of code. I need something very simple and this is fine.

Thank you Marc!
 
F

Fantus

Marc Christiansen pisze:
I had a (not so quick) look. The code proves its point (i.e. writing a
very small p2p application is possible), but it is horrible. With only
one server, the code is broken; maybe it works using multiple servers, I
didn't test. A quick fix seems to be to change the line
pr() and [aug(s) for s in aug(pr()[0])]
to
pr() and [aug(s) for s in aug(pr()[0])] or pr([myU])

Please don't take tinyp2p.py as an example on writing python.

HTH Marc


Ok, this seems to work "fine" (as much as a program designed to be
minimalistic can do) except it can't download files larger than 10kb.

It looks like a problem with SimpleXMLRPCServer (or at least I think so...)

While trying to download file larger than 10kb the server itself doesn't
crash but generates output like this:


----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 44817)
Traceback (most recent call last):
File "SocketServer.py", line 222, in handle_request
self.process_request(request, client_address)
File "SocketServer.py", line 241, in process_request
self.finish_request(request, client_address)
File "SocketServer.py", line 254, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "SocketServer.py", line 521, in __init__
self.handle()
File "BaseHTTPServer.py", line 316, in handle
self.handle_one_request()
File "BaseHTTPServer.py", line 310, in handle_one_request
method()
File "SimpleXMLRPCServer.py", line 445, in do_POST
self.wfile.write(response)
File "socket.py", line 248, in write
self.flush()
File "socket.py", line 235, in flush
self._sock.sendall(buffer)
error: (104, 'Connection reset by peer')
----------------------------------------


The client that was trying to make a download generates this:

Traceback (most recent call last):
File "backup5.py", line 75, in ?
(lambda fi:fi.write(proxy(url).f(pw(url),2,fn)) or
fi.close())(file(fn,"wc"))
File "backup5.py", line 75, in <lambda>
(lambda fi:fi.write(proxy(url).f(pw(url),2,fn)) or
fi.close())(file(fn,"wc"))
File "/usr/lib/python2.4/xmlrpclib.py", line 1096, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.4/xmlrpclib.py", line 1383, in __request
verbose=self.__verbose
File "/usr/lib/python2.4/xmlrpclib.py", line 1147, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib/python2.4/xmlrpclib.py", line 1281, in _parse_response
p.feed(response)
File "/usr/lib/python2.4/xmlrpclib.py", line 527, in feed
self._parser.Parse(data, 0)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 5,
column 15


Should I post this in a separate thread or maybe one of experts visiting
this group will take a look and hopefully solve my problem?

Thank you in advance.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top