<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.28.3">
</HEAD>
<BODY>
Hello all-<BR>
<BR>
&nbsp;&nbsp;&nbsp; I have created two application classes using PyQt, one a server which normally runs in console mode, the other a client with complete GUI. The server opens a socket and listens for connections from the client which issue various commands to be carried out. These are bother working quite well.<BR>
<BR>
&nbsp;&nbsp;&nbsp; I would like to produce a third script which launches bother the server and client processes at the same time, with all communication happening over localhost. The point is to allow the user to run the &quot;network&quot; version of the interface (connecting to the separate server process over the network) or a &quot;local&quot; version which is self-contained (including the server), while reusing the same code as much as possible.<BR>
<BR>
&nbsp;&nbsp;&nbsp; This last piece is nearly working, however the server component in the third &quot;local&quot; script is timing out during the communication process. I am wondering if I am simply failing to properly initialize the two class instances in order to share the single event loop.<BR>
<BR>
<BR>
When launching the client application in &quot;network&quot; mode, the code looks something like this:<BR>
<BR>
app = QtGui.QApplication(sys.argv)<BR>
window = client_interface(log)<BR>
window.show()<BR>
sys.exit(app.exec_())<BR>
<BR>
<BR>
When launching the server application from the console for &quot;network&quot; mode, the code looks like this:<BR>
<BR>
# Perform KeyboardInterrupt handling<BR>
signal.signal(signal.SIGINT, signal.SIG_DFL)<BR>
app = QtCore.QCoreApplication(sys.argv)<BR>
server = network_server(log, server_interface, server_port)<BR>
sys.exit(app.exec_())<BR>
<BR>
<BR>
And when trying to launch both in the same event loop for the &quot;local&quot; third script, I'm doing:<BR>
<BR>
app = QtGui.QApplication(sys.argv)<BR>
server = server.network_server(log, server_interface, server_port)<BR>
window = client.client_interface(log)<BR>
window.show()<BR>
sys.exit(app.exec_())<BR>
<BR>
<BR>
<BR>
In the server code, process control happens something like this:<BR>
<BR>
...<BR>
self.socket.newConnection.connect(self.processConnection)<BR>
...<BR>
def processConnection(self):<BR>
&nbsp;&nbsp; clientConnection = self.socket.nextPendingConnection()<BR>
&nbsp;&nbsp; if not clientConnection.waitForReadyRead(5000):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;Timeout waiting for client to transmit data&quot;<BR>
...<BR>
etc.<BR>
<BR>
<BR>
&nbsp;&nbsp;&nbsp; Currently each time the client goes to send data to the server, the connection seems to establish and the client side reports writing to the socket, but the server side times out after five seconds without the data packet having been received. The client GUI interacts properly, and the server routines seem to be getting called properly.<BR>
<BR>
&nbsp;&nbsp;&nbsp; The odd thing is I can start up the &quot;local&quot; integrated script, which will launch the server process (opening and listening to the port) as well as the client GUI, then connecting that server process by launching an instances of the &quot;network&quot; mode client GUI (so now there's two GUIs on the screen), and everything works fine with the second GUI. So it would seem the server side of the &quot;local&quot; script is working just fine.<BR>
<BR>
<BR>
&nbsp;&nbsp;&nbsp; Can anyone offer me pointers regards what I might be doing wrong, or perhaps where to look next?<BR>
<BR>
<BR>
Cheers<BR>
&nbsp;&nbsp;&nbsp; <BR>
Steve Castellotti<BR>
<BR>
<BR>
</BODY>
</HTML>