Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com Handler/Socket


gameower

Pergunta

E aí pessoal, beleza?? Comecei a trabalhar agora com python, e tenho como tarefa fazer um simples comunicador, com um servidor e varios clientes, para que isso seja acoplado a um codigo maior posteriormente, mas estou com um pequeno probema, não consigo entender por que o seguinte codigo, entra em lopp infinito quando um cliente se desconecta sem ser por digitar "exit" (Ctrl + C no terminal por exemplo), alguém sabe me explicar por que a função handle_close() não está fazendo o que deveria, ou se eu que não entendi bem o que ela faz?

Obrigado!

#!/usr/bin/env python
import asyncore
import socket

class EchoHandler(asyncore.dispatcher_with_send):
    
    def handle_read(self):
        try:
            data = self.recv(1024)
        except:
            handle_close(self)
        
        if data== 'exit' :
            self.close()
            print ('Client off 1')
        else: self.send(data)
        
    def handle_close(self):
       
       print('Cliente off 2')
       self.close()
       return 1

class EchoServer(asyncore.dispatcher):

    def __init__(self, host, port):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.set_reuse_addr()
        self.bind((host, port))
        self.listen(5)

    def handle_accept(self):
        pair = self.accept()
        if pair is None:
            pass
        else:
            sock, addr = pair
            print 'Incoming connection from %s' % repr(addr)
            handler = EchoHandler(sock)
        
    
server = EchoServer('localhost', 8083)
asyncore.loop()

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...