Python套接字代理示例,调用bind()时不断出现错误。。为什么?
我正在编写一个临时代理,它从fifo文件中获取命令,然后使用python套接字和select.poll托管任意代理连接。。我的问题是,调用socket.bind时,非常频繁。。我要么收到“坏文件描述符”错误,要么收到“非套接字上的套接字操作”,我不知道为什么?以下是代码片段:Python套接字代理示例,调用bind()时不断出现错误。。为什么?,python,linux,sockets,proxy,network-programming,Python,Linux,Sockets,Proxy,Network Programming,我正在编写一个临时代理,它从fifo文件中获取命令,然后使用python套接字和select.poll托管任意代理连接。。我的问题是,调用socket.bind时,非常频繁。。我要么收到“坏文件描述符”错误,要么收到“非套接字上的套接字操作”,我不知道为什么?以下是代码片段: pull_sock=socket.socket() push_sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) pull_sock.setsockopt(sock
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 LinuxHmmm 但现在看来这是一个梦想