On Monday 23 November 2009, 13:27:52 Nick Gaens wrote: > Nick Gaens schreef: > Phil Thompson schreef: > On Sat, 21 Nov 2009 17:19:00 +0100, Nick Gaens <[email protected]> > wrote: > > Hello all, > > I'm trying to get two clients to speak to each other, using an instance > > of > > QtNetwork.QTcpSocket for each client. > The clients are on different computers with IP's: 192.168.1.100 and .102 > > On the first client, I run the code below: > > ------------------ > def __init__(self): > self.socket = QtNetwork.QTcpSocket(self) > self.socket.setLocalAddress(QtNetwork.QHostAddress("192.168.1.100")) > self.socket.setLocalPort(55555) > self.socket.readyRead.connect(self.receiveData) > > def connectToOtherClient(self, ip): > self.socket.connectToHost(QtNetwork.QHostAddress(ip), 55555) > if self.socket.waitForConnected(10000): > print "Connected!" > else: > print self.socket.state() # Prints '0' (zero), meaning > UnconnectedState > > ------------------ > > So I create a QTcpSocket, I tell it the IP I want to use and after having > the user asking for the remote IP address, connectToOtherClient() is > invoked. > > On the second client, I just create an instance of this class, using > "192.168.1.102" as IP there in __init__(). No invocation of > connectToOtherClient() there, ofcourse.. > > The problem is: it doesn't connect at all.. The socket state remains > "UnconnectedState".. > > What am I doing wrong here? > > > Clients talk to servers, not other clients. Have a look at QTcpServer. > > Phil > > I've now instantiated a QTcpServer, which "creates" a socket for an > incoming connection (QTcpServer.nextPendingConnection(), that is). Both > clients have such a server instance, since they both should be able to > connect to each other. But still, the QTcpSocket.connectToHost() > invocation doesn't do a thing. I'm starting to think this is some bug / > error in PyQt4 itself instead of in my code. The C++-Qt4 Fortune Server + > Client example runs flawlessly between the two machines, so there are no > network blocks or something like that. Also, the C++-code has the same > logical flow as my code below. > > ---------------------------- > def __init__(self): > self.server = QtNetwork.QTcpServer(self) > self.server.serverPort = 55555 > self.server.newConnection.connect(self.clientConnecting) > self.server.listen() # defaults to QHostAddress.Any > > def clientConnecting(self): # used by the "server" > if self.server.hasPendingConnections(): > connectingClient = self.server.nextPendingConnection() > connectingClient.readyRead.connect(self.receiveData) > > def connectToClient(self, ip): # used by the "client" > socket = QtNetwork.QTcpSocket() > socket.readyRead.connect(self.receiveData) > socket.connectToHost(QtNetwork.QHostAddress(ip), 55555) # ip of > server if socket.waitForConnected(5000): > print "Connected!" > ---------------------------- > > I *really* do not understand why this is *not* working.. > > Nick > > Anyone? :-( I've tried various things, but none of them helped.. I've > found out that both NIC's actually send / receive some bytes (proven by > the suddenly increasing number of sent / received bytes on both > computers), but it doesn't actually connect them..
The usual "please provide a minimum self containing example" applies. Pete _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
