2017-12-08 12 views
0

를 랑데부에 연결할 수 없습니다파이썬/P2P 나는 <code>P2P</code> 노드를 사용하여 파이썬 (<code>pyp2p</code>)을 작성하려고하지만이 오류가 발생하고 서버를

Eamons-MacBook-Pro:blockchain eamonwhite$ python3 serveralice.py 
HTTP Error 404: Not Found 
HTTP Error 404: Not Found 
HTTP Error 404: Not Found 
HTTP Error 404: Not Found 
Traceback (most recent call last): 
    File "/Users/eamonwhite/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pyp2p/net.py", line 732, in start 
    rendezvous_con = self.rendezvous.server_connect() 
    File "/Users/eamonwhite/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pyp2p/rendezvous_client.py", line 92, in server_connect 
    con.connect(server["addr"], server["port"]) 
    File "/Users/eamonwhite/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pyp2p/sock.py", line 189, in connect 
    self.s.bind((src_ip, 0)) 
TypeError: str, bytes or bytearray expected, not NoneType 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "serveralice.py", line 10, in <module> 
    alice.start() 
    File "/Users/eamonwhite/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pyp2p/net.py", line 735, in start 
    raise Exception("Unable to connect to rendezvous server.") 
Exception: Unable to connect to rendezvous server. 

내 관련 코드는 다음과 같습니다 :

from uuid import uuid4 
from blockchain import Blockchain 
from flask import Flask, jsonify, request 
from pyp2p.net import * 
import time 

#Setup Alice's p2p node. 
alice = Net(passive_bind="192.168.1.131", passive_port=44444, interface="en0", node_type="passive", debug=1) 
alice.start() 
alice.bootstrap() 
alice.advertise() 

while 1: 
    for con in alice: 
     for reply in con: 
      print(reply) 

    time.sleep(1) 

... 

는 그것은 시작에 Net 기능 오른쪽에 갇히지 않는 경우 - rendezvous 패키지와 함께 할 수있는 뭔가. IP는 내 네트워크에있는 내 IP이며, 포트가 44444로 전달되었지만 그렇게 할 필요가 있는지 여부는 확실하지 않습니다. 감사.

답변

0

나는 서버 코드가 구성된 방식과는 달리, 다른 모든 노드를 처리하는 노드 인 랑데부 서버가 필요했습니다. 그것은 pyp2p 패키지의 net.py에 있습니다

# Bootstrapping + TCP hole punching server. 
rendezvous_servers = [ 
    { 
     "addr": "162.243.213.95", 
     "port": 8000 
    } 
] 

주소는 문제였다 분명히 그냥 자리의 IP입니다. 그래서 나는 내 자신의 랑데부 서버가 필요하다는 것을 깨달았고이 코드를 사용했습니다 - https://raw.githubusercontent.com/StorjOld/pyp2p/master/pyp2p/rendezvous_server.py.

그러나이 파일을 약간 디버깅해야했지만 작동하기 전에 상단에 import sys, import timeimport re 문이 필요했습니다. 이제 노드를 처리 할 수 ​​있도록 항상 나무 딸기 파이에 호스트 할 것입니다.