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
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to