Buenas,
El readLine espera efectivamente el fin de linea, por lo que si llegan datos todos el rato sin fin de linea, efectivamente se quedará siempre ahí.
Tienes algún control sobre lo que envía el GPS? Que bytes envía como fin de paquete?
Yo creo que en este caso no puedes usar el readLine, sino que debes leer los bytes uno a uno y detectar manualmente la finalización de envío de paquetes.
Código Java:
Ver originalint ch;
while ((ch == inFromClient.read()) != -1) {
....
Un saludo