[PyQt] qttcp
lucaberto at libero.it
lucaberto at libero.it
Mon Nov 10 17:00:56 GMT 2008
Hello i try to use this but i have a problem, i never see the server reply:
def identify(self):
SIZEOF_UINT16 = 2
self.socket = QtNetwork.QTcpSocket()
il_mio_nick = QtCore.QString('NICK mynick\n')
invio_identificazione = QtCore.QString('/msg nickserv identify my_password')
self.request = QtCore.QByteArray()
stream =QtCore.QDataStream(self.request, QtCore.QIODevice.WriteOnly)
stream.setVersion(QtCore.QDataStream.Qt_4_4)
stream.writeUInt16(0)
stream << il_mio_nick << invio_identificazione
stream.device().seek(0)
stream.writeUInt16(self.request.size()- SIZEOF_UINT16)
if self.socket.isOpen():
self.socket.close()
self.label.setText('Mi sto connettendo')
self.socket.connectToHost('irc.eden-irc.net', 6667)
if self.socket.waitForConnected (1000):
self.label.setText('connesso')
self.nextBlockSize = 0
self.socket.write(self.request)
self.request = None
self.leggo_risposta()
else :
errore = self.socket.SocketError()
self.label.setText(QtCore.QString("Errore: %1").arg(self.socket.errorString()))
self.socket.close()
def leggo_risposta(self):
stream = QtCore.QDataStream(self.socket)
stream.setVersion(QtCore.QDataStream.Qt_4_4)
SIZEOF_UINT16 = 2
while True:
if self.nextBlockSize == 0:
if self.socket.bytesAvailable() < SIZEOF_UINT16:
break
self.nextBlockSize = stream.readUInt16()
if self.socket.bytesAvailable() < self.nextBlockSize :
break
risposta =QtCore.QString
stream >> risposta
self.textEdit.setText(risposta)
self.nextBlockSize = 0
I use wireshark to log the network traffic and i see the the connection is ok i log also the reply from the server but i i'm not able to put it in the textEdit.
Debugging the project i never see reply from the server why the socket never read the reply?
Thanks
Luca
More information about the PyQt
mailing list