Esempio n. 1
0
class SocketTcpClient(AbstractSocket):
    """Socket que envia e recebe dados via TcpSocket"""
    def __init__(self, portaResponder, parent=None):
        super().__init__(None, portaResponder, parent)

        self._socketClient = QTcpSocket(self)

        self._socketClient.readyRead.connect(self._lerDados)

    def _lerDados(self):
        if self._socketClient.bytesAvailable():
            host = self.ipServidor()
            data = self._socketClient.readData()

            self.dadosRecebidos.emit(host, data)
            
    def enviarDados(self, byteArray):
        self._socketClient.write(byteArray)
            
    def setPara(self, para):
        if self.getPara() != para: 
            super().setPara(para)
            self._conectarServidor(para)

    def _conectarServidor(self, ip):
        if self._socketClient.state() in (QAbstractSocket.ConnectedState, QAbstractSocket.ConnectingState):
            self._desconectarServidor()

        self._socketClient.connectToHost(QHostAddress(ip), self.getPortaResponder())

    def _desconectarServidor(self):
        if self._socketClient.state() == QAbstractSocket.UnconnectedState:
            return True
        
        self._socketClient.disconnectFromHost()
        return self._socketClient.waitForConnected(50)

    def ipServidor(self):
        return self._socketClient.peerAddress()

    def meuIP(self):
        return self._socketClient.localAddress()
Esempio n. 2
0
class ConnectWindow(QMainWindow, Ui_ConnectWindow):
    def __init__(self):
        """
        
        Arguments:
        - `self`:
        """
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.socket = QTcpSocket()
        self.connect()

    # Signals
    conn_success = pyqtSignal('QTcpSocket')
    exit_signal = pyqtSignal()

    # Slots
    @pyqtSlot()
    def connect_server(self):
        """
        """
        self.statusBar.clearMessage()
        host = self.serverLine.text().trimmed()
        port = self.portLine.text().trimmed()

        if host and port:
            self.socket.connectToHost(host, int(port))
        else:
            self.statusBar.showMessage(
                'Enter valid a server address and port!')

    @pyqtSlot()
    def on_success(self):
        """
        """
        if self.socket.waitForReadyRead(10000):
            msg = self.socket.readData(1024)
            msg = loads(msg)
            if msg['head'] == CONN_SUCC:
                self.statusBar.showMessage('Connection established')
                self.conn_success.emit(self.socket)
                self.hide()
            else:
                self.statusBar.showMessage('Server is full!')
                self.socket.disconnectFromHost()
        else:
            self.on_error()

    @pyqtSlot()
    def on_error(self):
        self.statusBar.showMessage('Connection cannot be established!')

    def closeEvent(self, event):
        """
        """
        dialog = ExitDialog()
        if dialog.exec_():
            event.accept()
        else:
            event.ignore()

    # Connections
    def connect(self):
        """
        """
        self.connectButton.clicked.connect(self.connect_server)
        self.exitButton.clicked.connect(self.close)
        self.socket.error.connect(self.on_error)
        self.socket.connected.connect(self.on_success)
Esempio n. 3
0
class ConnectWindow(QMainWindow, Ui_ConnectWindow):
    def __init__(self):
        """
        
        Arguments:
        - `self`:
        """
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.socket = QTcpSocket()
        self.connect()

    # Signals
    conn_success = pyqtSignal('QTcpSocket')
    exit_signal = pyqtSignal()

    # Slots
    @pyqtSlot()
    def connect_server(self):
        """
        """
        self.statusBar.clearMessage()
        host = self.serverLine.text().trimmed()
        port = self.portLine.text().trimmed()

        if host and port:
            self.socket.connectToHost(host, int(port))
        else:
            self.statusBar.showMessage('Enter valid a server address and port!')
        
    @pyqtSlot()
    def on_success(self):
        """
        """
        if self.socket.waitForReadyRead(10000):
            msg = self.socket.readData(1024)
            msg = loads(msg)
            if msg['head'] == CONN_SUCC:
                self.statusBar.showMessage('Connection established')
                self.conn_success.emit(self.socket)
                self.hide()
            else:
                self.statusBar.showMessage('Server is full!')
                self.socket.disconnectFromHost()
        else:
            self.on_error()

    @pyqtSlot()        
    def on_error(self):
        self.statusBar.showMessage('Connection cannot be established!')

    def closeEvent(self, event):
        """
        """
        dialog = ExitDialog()
        if dialog.exec_():
            event.accept()
        else:
            event.ignore()

    # Connections
    def connect(self):
        """
        """
        self.connectButton.clicked.connect(self.connect_server)
        self.exitButton.clicked.connect(self.close)
        self.socket.error.connect(self.on_error)
        self.socket.connected.connect(self.on_success)