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.

Comments

Leave a Reply