Problem mit Socket-Programmierung

Hi Lun

ich stehe gehen vor den selben Problemen (read(), readLine() werden nicht beendet).

Die Variante mit in.available() funktioniert auch nicht.

Hast du mittlerweile eine Lösung gefunden?

cheerioh
SiS
 
Schaut mal in die API - read gibt -1 zurück und readLine null wenn keine Daten mehr vorhanden sind. Solange die Verbindung aber noch nicht getrennt wurde, ist es rein theoretisch möglich, dass noch Daten nachkommen => Es wird nicht -1 oder null zurückgegeben. Das liegt auch daran, dass die Daten ja auch nicht "sofort" da sind, sondern erst übers Netzwerk übertragen werden müssen.
 
Ich stehe gerade vor demselben Problem bei der Programmierung eines Http-Proxies.
Meine Lösungsansätze:
1. Ich probiere es mit dem DataInputStream.available()
2. Wenn das nicht funktioniert: Timeout programmieren.
3. Tatsächlich die Http-Messages (Request und Response) nach jedem read komplett parsen und entscheiden, ob sie schon vollständig ist. (Aufwändigste Methode, aber wohl auch die sicherste)

Die 3. Möglichkeit fällt bei dir ja raus, da du keine gnaue Längenangabe vom Server geschickt bekommst, also wäre Lösung 2 bei dir die einzig mögliche, oder?
 
Hi,

leider liegt meinn Code hierzu auf einer alten FP und ich komme da jetzt nicht ran.
Aber (wie procurve sagt) ein Timeout ist hier meine Lösung gewesen.

Gruß Tim
 
Zurück