Найти - Пользователи
Полная версия: Ошибка 10048
Начало » Python для новичков » Ошибка 10048
1
Rumit
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 останавливает программу)?
Euler
Порт не должен быть в диапазоне от 5001 до 5032 включительно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB