Python套接字代理示例:始终在调用bind()时遇到错误..为什么?

2024-06-30 05:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个临时代理,它从fifo文件中获取命令,然后使用python套接字和选择投票.. 我的问题是在打电话的时候套接字.绑定.. 或者“我肯定是一个错误的套接字操作”和“我肯定不是一个错误”?下面是一段代码:

pull_sock=socket.socket()
push_sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
pull_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
push_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
clients={}
# start pull connection
try:
    print "connecting to:", saddr, sport
    pull_sock.connect((saddr,sport))
    except Exception, e:
        print "unable to connect:", repr(e)
        self._threadsafe_remove_dport(dport)
        return
    # start push server connection
    try:
        sleep(1)
        push_sock.bind(('',dport))
        push_sock.listen(1)
        print "host new proxy on %d to %s:%d" % (dport, saddr, sport)
        print "pushfd=",push_sock.fileno(),"pullfd=",pull_sock.fileno()
        # register sockets for async polling
        sockpoll = select.poll()
        sockpoll.register(push_sock, select.POLLIN | select.POLLOUT)
        sockpoll.register(pull_sock, select.POLLIN)

总是失败的是bind()命令,其他什么都没有。我试过“”(所有网卡)、'127.0.0.1、'localhost'。。。所有人都做同样的事。在

我还注释了REUSEADDR部分。但这也没什么区别:(

顺便说一句。。使用Arch Linux


Tags: to命令register错误socketselectpushpull
1条回答
网友
1楼 · 发布于 2024-06-30 05:54:51

嗯。。。。如果我在pull_sock.connect位之后和绑定之前声明push-sock变量,它就不再发生了?!就像Python中有一个bug把两个套接字搞混了?在

不过,现在看来这是一个梦想!在

相关问题 更多 >