Score:1

ปัญหาการเชื่อมต่อเครือข่ายกับ Python3 และ bitcoinrpc ใน WSL2 แต่ไม่ใช่ WSL1

ธง in

ฉันใช้ Ubuntu 20.04 บน Windows 10 โดยใช้ WSL2

ฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ bitcoin testnet บนเครื่องของฉัน 127.0.0.1 ผ่าน Python

สคริปต์ไพ ธ อนทำงานได้ดีบน Pycharm, Command Prompt และ Powershell และจนกระทั่งเมื่อเร็ว ๆ นี้ทำงานได้ดีใน Ubuntu เมื่อฉันเรียกใช้บน WSL1

หลังจากเปลี่ยนเป็น WSL2 สำหรับ Ubuntu ฉันได้รับข้อผิดพลาดต่อไปนี้แม้ว่าจะทำงานใน CMD, PS และ Pycharm เหมือนกัน ดูเหมือนว่ามีบางอย่างปิดกั้นด้าน Ubuntu ฉันจะแก้ไขปัญหานี้ได้อย่างไร การปิดใช้งาน Windows Fast Start ไม่สามารถแก้ปัญหานี้ได้

Traceback (การโทรครั้งล่าสุดล่าสุด):
  ไฟล์ "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", บรรทัด 308 ใน <โมดูล>
    run_lab_4()
  ไฟล์ "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", บรรทัด 236 ใน run_lab_4
    block_info = connect_rpc (พอร์ตไหน, rpc_username, rpc_password, block_to_get)
  ไฟล์ "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", บรรทัด 41 ใน connect_rpc
    กลับ rpc_connection.getblock (block_hash)
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/site-packages/bitcoinrpc/authproxy.py" บรรทัด 132 ใน __call__
    self.__conn.request('โพสต์', self.__url.path, postdata,
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py" บรรทัด 1257 ตามคำขอ
    self._send_request (เมธอด, url, เนื้อหา, ส่วนหัว, encode_chunked)
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py" บรรทัด 1303 ใน _send_request
    self.endheaders (เนื้อหา, encode_chunked=encode_chunked)
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py", บรรทัด 1252 ในส่วนหัวท้าย
    self._send_output (ข้อความ_body, encode_chunked=encode_chunked)
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py" บรรทัด 1012 ใน _send_output
    self.send(msg)
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py" บรรทัด 952 ในการส่ง
    ตัวเองเชื่อมต่อ ()
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py" บรรทัด 923 ในการเชื่อมต่อ
    self.sock = ตัวเอง._create_connection(
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/socket.py", บรรทัด 843 ใน create_connection
    เพิ่มข้อผิดพลาด
  ไฟล์ "/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/socket.py", บรรทัด 831 ใน create_connection
    ถุงเท้าเชื่อมต่อ (sa)
ConnectionRefusedError: [Errno 111] การเชื่อมต่อถูกปฏิเสธ
Score:0
ธง vn

ฉันไม่คุ้นเคยกับสคริปต์เหล่านี้ แต่ดูเหมือนว่าคุณกำลังบอกว่าเซิร์ฟเวอร์ Bitcoin กำลังทำงานบนโฮสต์ Windows ของคุณและคุณกำลังพยายามเชื่อมต่อกับมันที่ 127.0.0.1 จากภายใน WSL2 อย่างน้อยนั่นจะอธิบายสิ่งที่คุณกำลังประสบอยู่

ความแตกต่างระหว่าง WSL1 และ WSL2 ในกรณีนี้คือ:

  • WSL1 แชร์เครือข่าย Windows ด้วยวิธีง่ายๆ อินสแตนซ์ WSL1 มีที่อยู่ IP เดียวกันกับโฮสต์ Windows และ 127.0.0.1/โลคัลโฮสต์ จากภายใน WSL1 จะเหมือนกับ Windows โลคัลโฮสต์. มันทำหน้าที่เหมือนเครือข่ายบริดจ์

  • ในทางกลับกัน WSL2 ทำงานในสภาพแวดล้อมเสมือนจริงมากขึ้น โดยใช้องค์ประกอบของไฮเปอร์ไวเซอร์ Windows Hyper-V เป็นหลัก เครือข่ายอยู่บน NIC เสมือนที่รัน NAT'd ด้านหลัง โฮสต์ Windows 127.0.0.1/โลคัลโฮสต์ อ้างถึงอะแด็ปเตอร์เครือข่ายเสมือน WSL2 ไม่ ของโฮสต์ Windows

วิธีแก้ปัญหาควรค่อนข้างตรงไปตรงมา ใช้อย่างใดอย่างหนึ่ง:

  • ที่อยู่ของโฮสต์ Windows (เช่น 192.168.1.10)
  • ที่อยู่ของเราเตอร์เสมือนที่ Hyper-V ตั้งค่าซึ่งสามารถกำหนดได้ ip rl เริ่มต้น ใน WSL
  • หรือชื่อ mDNS สำหรับเราเตอร์เสมือนนั้น นี่คือ "ชื่อคอมพิวเตอร์" ของ Windows ตามด้วย .ท้องถิ่น. หากคุณต้องการกำหนดชื่อนั้นจากภายใน WSL2 คุณสามารถใช้:
    echo "$(powershell.exe '[Console]::Write($env:COMPUTERNAME)').local"
    

หากฉันเข้าใจการตั้งค่าของคุณผิดและไม่ได้ผล โปรดแจ้งให้เราทราบ แล้วเราจะชี้แจงการกำหนดค่าได้

Tennis Tubbies avatar
in flag
ขอบคุณมาก คุณได้ช่วยอย่างมาก ฉันเห็นว่าทำไมตอนนี้มันใช้งานไม่ได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา