【问题标题】:python socket listener not receiving datapython套接字侦听器未接收数据
【发布时间】:2021-08-17 03:41:05
【问题描述】:

我正在编写一个去中心化脚本来跟踪运行该脚本的其他计算机的 IP,以探索去中心化。此脚本隔离了问题。该代码由 2 个脚本组成,一个主程序将其 IP 发送到提供的 IP(如果提供了一个),以及一个作为下标运行并侦听数据并将该数据通过管道传回主程序的侦听器程序。主脚本似乎正在运行,数据通过网络发送,但侦听器没有收到。

这是主脚本

    import socket
    from subprocess import Popen, PIPE
    from time import sleep
    def getIP():
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:
            s.connect(('8.8.8.4', 1))
            IP = s.getsockname()[0]
        except Exception:
            IP = '127.0.0.1'
        finally:
            s.close()
        return IP
    def sendfyi(target, ownIP):
        toSend = 'fyi' + ':' + ownIP
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((target, 50000))
        s.send(toSend.encode())
        s.close()
        print('sent fyi')
    otherIPs = []
    ownIP = getIP()
    
    targetIP = input('enter ip or 0: ')
    if targetIP != '0':
        otherIPs.append(targetIP)
        sendfyi(targetIP, ownIP)
    
    listener = Popen(['python3', 'testlistener.py'], stdout=PIPE, stderr=PIPE)
    i = 0
    while i == 0:
        sleep(1)
        listenerPipe = listener.stdout.readline()
        print(listenerPipe)

这是子进程:

import socket
def getIP():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        # doesn't even have to be reachable
        s.connect(('8.8.8.4', 1))
        IP = s.getsockname()[0]
    except Exception:
        IP = '127.0.0.1'
    finally:
        s.close()
    return IP

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((getIP(), 50000))
i = 1
while i == 1:
    s.listen(1)
    conn, addr = s.accept()
    print('conected', flush=True)
    data = conn.recv(1024)
    print('data receved', flush=True)
    out = data.decode()
    print('data decoded', flush=True)
    print(out, flush=True)
    conn.close()

【问题讨论】:

    标签: python python-3.x sockets network-programming


    【解决方案1】:

    不正确的绑定语句

    bind(('', 50000))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      相关资源
      最近更新 更多