Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 16, 2013 21:51:20

Rumit
Зарегистрирован: 2013-09-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка 10048

from socket import *
import threading
import thread
def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFSIZ)
        if not data:
            break
        msg = 'echoed:... ' + data
        clientsock.send(msg)
    clientsock.close()
if __name__=='__main__':
    HOST = 'localhost'
    PORT = 5005
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    serversock = socket(AF_INET, SOCK_STREAM)
    serversock.bind(ADDR)
    serversock.listen(2)
    while 1:
        print 'waiting for connection...'
        clientsock, addr = serversock.accept()
        print '...connected from:', addr
        thread.start_new_thread(handler, (clientsock, addr))

Я так понимаю что проблема в аварийном отключении или программы клиента или самого сервера. Правильно что порт остается занят? Искал долго и усердно, все говорят об “sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, server.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1)” но мне это ничего не дает, один клиент принимает пустое сообщение и второй клиент уже не подключается (как будто сервер отключен). Как решить эту проблему? Как в программе можно предотвратить аварийное отключение клиента? Как можно отключать сокет перед аварийным завершением программы? Как можно не аварийно завершить программу(там везде бесконечные циклы, не понимаю как можно реагировать на пользователя, ведь input останавливает программу)?

Офлайн

#2 Сен. 18, 2013 15:04:50

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка 10048

Порт не должен быть в диапазоне от 5001 до 5032 включительно.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version