python套接字服务器 - 即使客户端断开也继续监听

0 投票
1 回答
1944 浏览
提问于 2025-04-29 20:10

这个运行得很好

  #!/usr/bin/python
    import urllib
    import socket              
    import os
    s = socket.socket()         
    host = socket.gethostname() 
    port = 1514                
    s.bind((host, port))        

    s.listen(500)                 

    c, addr = s.accept()  
    while True:
          # Establish connection with client.
          print 'Got connection from', addr
          print c.recv(1024)
          c.send('Recieved') 

    c.close()                
    raw_input()

但是有几点需要注意:

  1. 当客户端断开连接时,程序就会关闭。我想让它在客户端断开后,仍然继续等待新的连接。

  2. 我该如何让它无限期地等待连接呢?

暂无标签

1 个回答

2

你可以在外面加一个 while True 的循环,然后在里面用 try/except 来处理连接关闭的情况。换句话说,accept() 可以在一个循环里反复调用。

不过,通常更“正确”的做法是使用异步或事件驱动的方式,就像 Python 的 Twisted 库实现的那样。这样你就可以同时接收多个客户端的连接,而不需要等一个连接关闭后才能接下一个。

撰写回答