2015-11-18 2 views
0

Я знаю, что есть другие сообщения, похожие на мои, но я не получил ничего полезного из этих сообщений, поэтому здесь я иду.Локальное переменное сокет, указанное перед назначением

У меня есть этот код, который я использую:

def startElection(): 

    index = vesselList.index(getmyip()) 
    if index >= (len(vesselList)-1): 
    neighbour = vesselList[0] 

    else: 
    neighbour = vesselList[index+1] 
    try: 
    socket = openconn(neighbour, destport, localip=None, localport=None, timeout = 5) 
    socket.send(iD) 
    socket.close() 
    except socket.error, exc: 
    print "Caught exception socket.error : %s" % exc 

Я получаю ошибку:

Я попытался изменить имя сокета. Я попытался написать socket = None перед методом try. Я не совсем уверен, почему это происходит.

******** EDIT 1 ********

У меня есть этот код, который почти идентичен тому, что я показал вам, ребята, первый. Этот код ниже меня отлично работает, никаких ошибок. Когда я раскомментирую вызов функции, сделанный для startElection(), код ниже меня работает отлично.

#Start the for loop to send the new word to all the vessels in our vesselList. 
    destport = 63166 
    for destHost in vesselList: 
    if destHost != getmyip(): #Obviously we wont be needing to send it to the vessel it was made in. 
     try: 
     soocket = openconn(destHost, destport, localip=None, localport=None, timeout = 5) 
     soocket.send(userMSG) 
     soocket.close() 
     except soocket.error, exc: 
     print "Caught exception socket.error : %s" % exc 

ответ

0

В моей ситуации было указано, что номер порта был неверно определен. Быстрое изменение на этом исправило мою проблему!

0

Вы используете сокет как имя переменной и как тип.

Тип socket.error находится в классе сокетов. Поскольку вы объявили, что сокет является переменной, среда выполнения, вероятно, создала имя локальной переменной без ссылки, а затем попыталась использовать ее для настройки обработчика исключений.

Измените имя переменной, и проблема должна исчезнуть.

+0

Я получаю ту же ошибку при ее изменении, например, test1. Я упомянул в своем вопросе, что я попытался изменить имя сокета. Но спасибо в любом случае –

+0

вы уверены, что изменили все экземпляры сокета? Назначение, отправка и закрытие - но не socket.error? –

+0

Да все. что означает, что в моем коде были внесены четыре изменения. –

Смежные вопросы