<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hans-Peter Jansen schreef:
<blockquote cite="mid:200911231513.29746.hpj@urpla.net" type="cite">
  <pre wrap="">On Monday 23 November 2009, 13:27:52 Nick Gaens wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap=""> Nick Gaens schreef:
 Phil Thompson schreef:
On Sat, 21 Nov 2009 17:19:00 +0100, Nick Gaens <a class="moz-txt-link-rfc2396E" href="mailto:nickgaens@gmail.com">&lt;nickgaens@gmail.com&gt;</a>
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..
    </pre>
  </blockquote>
  <pre wrap=""><!---->
The usual "please provide a minimum self containing example" applies.

Pete

_______________________________________________
PyQt mailing list    <a class="moz-txt-link-abbreviated" href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a>
<a class="moz-txt-link-freetext" href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a>
  </pre>
</blockquote>
How odd that I receive this mail *the moment* my code started working
:-P.<br>
<br>
I found that the serverPort may not be overwritten.<br>
<br>
I removed this assignment: <br>
<blockquote>self.server.serverPort = 55555<br>
</blockquote>
and the clients now can connect to the server w/o any problem..
Downside is that the port is random..<br>
<br>
Nick
</body>
</html>