Percebeu alguma mudança? Veja o porquê.
Este é o Jornal do Jerimum, um blog mantido por Allan Garcia, sócio e administrador da ADG Soluções. Neste blog tratamos de assuntos relacionados com Tecnologia, Linux, Redes, Programação e outros.

Como conectar via socket em um servidor usando Python? Allan Garcia 16 de novembro de 2008

Para quem precisa apenas se conectar em um servidor usando Python e mandar e receber comandos eis uma classe simples que fiz e uso para diversos projetos.

class UserSocket:
    """
    Classe de comunicacao
 
    Exemplo:
        UserSocket("10.13.97.81", 2100)
    """
 
    def __init__(self, host, port):
        """
        Construtor do driver de conexao
        """
        self.__host = host
        self.__port = port
        self.connect_server()
 
    def connect_server(self):
        """
        Realiza a conexao com o servidor
        """
        try:
            self.__soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
            self.__soc.connect((self.__host, self.__port))
        except Exception:
            return False
        return True
 
    def close_server(self):
        """
        Fecha a conexao com o servidor
        """
        try:
            self.__soc.close()
        except Exception:
            return False
        return True
 
    def receive_data(self):
        """
        Recebe os dados do buffer do servidor
        """
        data = ''
        chunk = ' '
        while (len(data) < 1) or (chunk != '\n'):
            chunk = self.__soc.recv(1)
            if chunk == '':
                raise RuntimeError, "socket connection broken"
            data = data + chunk
        return data
 
    def send_data(self, data):
        """
        Envia dados para o servidor
        """
        try:
            self.__soc.sendall(data)
        except Exception:
            return False
        return True

Usando …

>>> s = UserSocket("10.13.97.81", 2100)
>>> data = s.receive_data()
>>> s.send_data("COMANDO")

… você poderá se comunicar com qualquer servidor socket.

Deixe um comentário