20. juli 2005 - 12:25Der er
16 kommentarer og 1 løsning
read() kaldes for hurtigt på en socket.
Jeg benytter Socket til at tage imod en lang datastreng som kan være delt over flere pakker.
Hvis ikke linien "while(!hostIn.ready()){};" er der kaldes "byteValue = hostIn.read();" for hurtigt... altså før data er klar, og der kommer en exception.
Mit probelm er nu blot at når der kommer en ny data-pakke er data ikke lige klar, og derfor kommer der en exception, hvordan håndteres dette?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
grunden til at jeg ikke bruger readline, er at jeg er interesseret i alle karakterer, og new-line, osv. Hvis jeg bruger readLine() bliver nogle af disse da ikke sorteret fra???? ..og ville det løse mit problem??
der gav du mig en ledetråd, nu har jeg ændret mySocket.setSoTimeout(1000); til mySocket.setSoTimeout(10000); og det virker nu. Jeg vil lige prøve at undlade at bruge en wrapper som du skriver.
hostOut = new BufferedWriter(new OutputStreamWriter(mySocket.getOutputStream(),"UTF-8")); // hostIn = new BufferedReader(new InputStreamReader(mySocket.getInputStream(),"UTF-8")); hostIn = new InputStreamReader(mySocket.getInputStream(),"UTF-8");
ok, jeg vil så nok bruge en readLine() i stedet for. Hvad mener du lige præcist med "(undtagen \r\n som jo er implicitte i linie begrebet)"? kan jeg blot hver gang jeg har modtaget en linie indsætte \r\n bagefter? giver et det samme?
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.