Ram*_*rar 3 python sockets ports
我正在制作一个服务器,它创建一个tcp套接字并在端口范围内工作,每个端口它将在该端口上监听一段时间,然后继续其余的代码.
像这样::
import socket
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
msg =''
ports = [x for x in xrange(4000)]
while True:
try:
for i in ports:
sck.bind(('',i))
## sck.listen(1)
## make it just for some time and then continue this
## if there a connection do this
conn, addr = sck.accept()
msg = conn.recv(2048)
## do something
##if no connection continue the for loop
conn.close()
except KeyboardInterrupt:
exit()
Run Code Online (Sandbox Code Playgroud)
所以我怎么能让sck.listen(1)工作一段时间?
Ale*_*lli 12
您可以setTimeout的插座上,你希望每次都(前再次每次调用它在它等待的最长时间listen你要等待的时间这阵子) -你会得到一个例外,socket.timeout,如果计时器到期,那么一定要有一个try/ except socket.timeout:围绕它来捕捉那个案例.(select.select具有超时的A 也可以工作,并且具有能够在多个套接字上等待并适用于各种条件的优点,但是对于您的特定问题的答案而言,它不那么直接).
上次我给出了这样一个答案时,我得到了许多的支持......大概是纯粹主义者想要确保没有人,他们不赞成的程序(例如通过像你这样的非常特殊的结构而不是许多正常的,通常的写服务器的方式).让我们看看这次会发生什么! - )
| 归档时间: |
|
| 查看次数: |
6495 次 |
| 最近记录: |