首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python套接字代理示例,继续获取调用bind()的错误。为什么?

Python套接字代理示例,继续获取调用bind()的错误。为什么?
EN

Stack Overflow用户
提问于 2011-07-22 09:10:06
回答 1查看 706关注 0票数 0

我正在编写一个临时代理,它从fifo文件中获取命令,然后使用python和select.poll托管任意的代理连接。我的问题是,经常打电话给socket.bind..。我得到一个“坏的文件描述符”错误,或“套接字操作的非套接字”,我不知道为什么?下面是代码的一个片段:

代码语言:javascript
运行
复制
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

EN

Stack Overflow用户

发布于 2011-07-22 09:30:53

嗯……如果我声明push_sock varaible pull_sock.connect位之后而在绑定之前,它就不再发生了?!这几乎就像Python中有一个bug,使两个套接字混淆了吗?

不过,现在似乎实现了一个梦想!

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6787866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档