This is not a clear-cut issue. Consider two extreme ends of the spectrum:
Your proprietary client software is an HTTP client and it renders HTML responses. It can work with any HTTP server. The HTTP server that you use for your service happens to use GPL components.
You have a program that uses GPL-licensed components. You pick an arbitrary point in that program's operation and break the program into two programs. The two programs communicate over a totally superfluous network hop. You put all the GPL-licensed components in the first program and license under the GPL, and you license the other program under a GPL-incompatible license.
The first case is clearly okay. The second case is clearly not okay. You haven't given much information about your particular case, and even if you did, only a court ruling could decide definitively whether you're in the right.
The GPL FAQ has this to say on interoperable, separately-licensed programs:
However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.
The difference between this and “incorporating” the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.
You must decide whether you think your client are server meet the standard of "two parts of the same program" (and therefore must each be licensed under the GPL) or not. The GPL FAQ gives some further explanation on this topic on another question:
Where's the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).
By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.
So, network communication certainly passes the "mechanism of communication" test but it is unclear where your client/server pair falls on the "semantics of communication" test.