1

我在我的 RPi 上运行了这个程序(sudo ais_rx.tcp -d --tcp):

https://github.com/chgans/gr-ais

我已经让它运行并可以创建一个输出文件。我无法使 TCP 服务器选项正常工作。Netstat --tcp 什么也没显示。Telnet in...连接被拒绝。我认为可能存在代码错误:

conns = [] #active connections
if options.tcp is True:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('', 9987))
    s.listen(1)
    s.setblocking(0)
try:
    while 1:
        if options.tcp is True:
            try:
                conn, addr = s.accept()
                conns.append(conn)
                print "Connections: ", len(conns)
            except socket.error:
                pass

        if not queue.empty_p():
            while not queue.empty_p():
                msg = queue.delete_head() # Blocking read
                sentence = msg.to_string()
                if options.tcp is True:
                    for conn in conns[:]:
                        try:
                        conn.send(sentence + "\n")
                        except socket.error:
                        conns.remove(conn)
                            print "Connections: ", len(conns)
                else:
                    print sentence
                    sys.stdout.flush()

        elif runner.done:
            if options.tcp is True:
                s.close()
            break
        else:
            time.sleep(0.1)

我能想到的唯一另一个错误是,如果没有数据(我的办公室里没有),那么套接字永远不会被绑定。我已经尝试手动输入 ip 引号,引号外,为其分配一个变量...如果它在数据可用之前无法连接,我将如何更改它?我正在考虑删除:

if not queue.empty_p():
            while not queue.empty_p():

这样无论队列中是否有数据,它都会做其他事情?我只是在这一点上随机猜测。谢谢。任何帮助将不胜感激。

4

0 回答 0