Search code examples
pythonattributestimeoutattributeerror

Python Socket timeout error


I am writing a very simple udp socket connection in Python 2.7

The server side is up and running. I have trouble on the client side.

from socket import *

serverName = '127.0.0.1'
serverPort = 5444
counter = 1;

while counter < 55:
    mySocket = socket(AF_INET,SOCK_DGRAM)

    try:
        mySocket.settimeout(1.0)
        message = raw_input('')
        mySocket.sendto(message,(serverName, serverPort))
        modifiedMessage, serverAddress = mySocket.recvfrom(1024)
    except mySocket.timeout:
        print 'Request timed out!'
        mySocket.close()
    else:   
        print 'Server Response:  '
        print modifiedMessage   

    mySocket.close()

I am getting the following error. except mySocket.timeout: AttributeError: '_socketobject' object has no attribute 'timeout'

I can't understand how come there is no timeout attribute?!

In fact I am looking at the intelisense and there is no such attribute too.

Any suggestion will be greatly appreciated


Solution

  • The socket module has a timeout class. Your socket object, mysocket (of type socket.socket), does not have a timeout attribute.

    Try this:

    except timeout:
        print 'Request timed out!'
        mySocket.close()
    

    Note that you should also be careful about using import * in this manner.