05. oktober 2004 - 14:10Der er
9 kommentarer og 1 løsning
socket problem med c# klient. hvordan checkes på stream end?
Vi har lavet en Java server der modtager en xml fil. denne xml fil har en http header hvorfor vi ikke kan bruge bufferedreader's readline funktion (da http foreskriver 2*carrier return ved enden af headeren)
problemet ligger i at vi ikke kan checke på hvornår c# klienten er færdig med at sende, og javaserveren derfor hænger... nogen ideer????
java serveren bliver består af flg: (inputstream er iøvrigt en BufferedReader)
vi ønsker ikke at afbryde forbindelsen da vi efter at have sendt en xml med http header den ene vej ønsker at sende et svar den anden - uden at skulle etablerer forbindelse igen.
Hvis du ikke vil lukke, så er du nødt til enten at sende en længde (med readLine antal linier) eller sende en terminator (med readLine f.eks. en linie med ">>>> FIN <<<<".
Indrømmet der godt kan bruges readline - men det bringer mig stadig ikke nærmere ved løsningen, nemlig hvordan man sikrer sig at man har modtaget alt der er sendt fra den anden side. ... er der en eller anden end-of-file caracter man kan checke på?
Hvis du vil følge HTTP standarden, så må du jo følge den.
Så læser du content-length HTTP headeren, læser det antal data bytes (efter den tomme linie) som byte array, læser dine linier fra det byte array (wrap byte arrayet i en ByteArrayInputStream).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.