def incomingConnection(self, socket): if not self.enabled: return s = QTcpSocket(self) s.setSocketDescriptor(socket) sIp = unicode(s.peerAddress().toString()) sPort = s.peerPort() if sIp.startswith(self.ipFilter): SimuVis4.Globals.logger.info(unicode(QCoreApplication.translate('RemoteControl', 'RemoteControl: accepting connection from %s, port %s')), sIp, sPort) self.connect(s, SIGNAL('readyRead()'), self.readClient) self.connect(s, SIGNAL('disconnected()'), self.discardClient) else: SimuVis4.Globals.logger.error(unicode(QCoreApplication.translate('RemoteControl', 'RemoteControl: refusing connection from %s, port %s')), sIp, sPort) self.discardClient()
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()