You can construct a StreamReader on the TcpClient's stream and use that to read line by line:
Code:
TcpClient tcp = new TcpClient();
// .. etc ..
StreamReader sr = new StreamReader(tcp.GetStream());
while(tcp.Connected())
{
string line = sr.ReadLine();
// parse GGA, etc..
}
The stream reader will block until a full line (\r\n) is available to be read, and then return that line. The underlying buffer on the tcp client shouldn't be an issue. Post back if you have more questions!
Hope this helps,
John