python socket server - 即使客户端断开连接也会监听

时间:2014-10-27 02:12:18

标签: python sockets

这很好用

  #!/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 个答案:

答案 0 :(得分:2)

你可以在外面放一个while True循环并尝试/除了内部连接关闭。换句话说,accept()可以循环调用。

然而,"对"这样做的方法通常是使用Python Twisted实现的异步/事件驱动方法。这样,您可以同时接受来自多个客户端的连接,而不必等待一个连接关闭,然后再接受下一个连接。