2-way network communication between 2 Qt programs



  • Apologies for what probably is a noob (and long-winded) question, however this is my first time doing any kind of network programming (I'm very familiar with Qt and C++, but just not the TCP networking paradigm) so call me a dunce if you wish :P

    My scenario: I have 2 Qt applications (let's call them "node" and "controller"). There can only be one "controller", but the number of "nodes" may vary (eg. different clients). I want to have the "controller" initiate the connection to each client such that arbitrary data is sent back and forth as it is ready (readyRead() signal? ). I'm probably missing some important TCP concepts.

    I have implemented the Fortune Client/Server example with the "controller" as the Client (since it would initially ask for a connection), and the Fortune Server as a test (eventually it would be a "node" sending data). This is where I'm stuck. Ignoring less-than-critical performance issues, how would I modify the Fortune example (or perhaps roll my own) to allow the Server to accept data from the "controller" without the use of any buttons/etc, but to get it as it is "ready"? Ideally, this needs to scale up to a max of 15 "nodes".

    Please let me know if clarification is needed!


  • Qt Champions 2016

    @htmlboss
    Hi,

    let's call them "node" and "controller"

    Let's not do that. Let's call them a server and a client - it's much better and easier to follow the accepted terminology. A server will serve the requests presented by the clients (see the analogy with a busy restaurant?).

    There can only be one "controller", but the number of "nodes" may vary (eg. different clients).

    So you have one server and a few clients. So far so good.

    I want to have the "controller" initiate the connection to each client such that arbitrary data is sent back and forth as it is ready (readyRead() signal? ).

    How data flows between the client and the server is completely independent of who initiated the connection. You can still have the server sending data to the clients (what http servers mostly do), and still the client initiates the connection (i.e. your browser).

    I have implemented the Fortune Client/Server example with the "controller" as the Client (since it would initially ask for a connection), and the Fortune Server as a test (eventually it would be a "node" sending data). This is where I'm stuck. Ignoring less-than-critical performance issues, how would I modify the Fortune example (or perhaps roll my own) to allow the Server to accept data from the "controller" without the use of any buttons/etc, but to get it as it is "ready"? Ideally, this needs to scale up to a max of 15 "nodes".

    Just write from the appropriate side (application). The server should stay the server, and the client should stay a client, don't switch their roles.

    Kind regards.



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.