2014-10-27 99 views
0

这工作得很好蟒蛇插槽服务器 - 听即使客户端断开

#!/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

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

但是,“正确”的方式通常采用由Python Twisted实现的异步/事件驱动方法。这样,您可以同时接受来自多个客户端的连接,而不必在接受下一个连接之前等待一个连接关闭。

+0

谢谢。 's.listen(500)'将int设置为“0”还是为空?它是否也会无限次地监听? – user3893623 2014-10-27 02:23:02

+0

不,“listen()”的参数是有多少客户端可以等待您接受它们。它不会改变您需要编写代码的方式。 – 2014-10-27 02:37:26

+0

好的,谢谢! – user3893623 2014-10-27 02:51:59