代码之家  ›  专栏  ›  技术社区  ›  Muhamad Arie Taufik R. G.

捕获套接字超时错误

  •  0
  • Muhamad Arie Taufik R. G.  · 技术社区  · 7 年前

    我想抓住插座。超时错误,以下是我的代码:

    import socket
    import sys
    from time import sleep
    
    print("Server Listening...")
    IPparse = "localhost"
    Portparse = 4444
    serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = (IPparse, Portparse)
    serverSocket.settimeout(5)
    serverSocket.bind(server_address)
    serverSocket.listen(2)
    (server, (ip,port)) = serverSocket.accept()
    try:
        data = server.recv(16).decode()
        if data == "Hello":
            print("Hallo Bro")
    except socket.timeout as e:
        print ("Timeout is over")
        print (e)
    

    但当我运行代码时。我遇到了以下错误:

    Server Listening...
    Traceback (most recent call last):
      File "C:\Users\astend\Desktop\TA\20180220 - Gabungan Gui  - v.1\Socket\terima2.py", line 13, in <module>
        (server, (ip,port)) = serverSocket.accept()
      File "C:\Users\astend\AppData\Local\Programs\Python\Python36\lib\socket.py", line 205, in accept
        fd, addr = self._accept()
    socket.timeout: timed out
    

    我在这里遗漏了什么关键点?

    1 回复  |  直到 7 年前
        1
  •  0
  •   user207421    7 年前

    你需要做 accept() 内部 try

    或者,不要在侦听套接字上设置超时,而是在接受的套接字上设置超时。