20. juli 2006 - 20:42Der er
11 kommentarer og 1 løsning
Socket(Buffered) reader med Delimiter
Hej jeg har en server der skal modtage anmodninger fra en klient, klienten kontakter serverSocket på port 9600.
Programmet skal så vente på en hel streng, enden er definieret med char seq. ASCII carriage return character(DEC13), line feed (DEC10). når denne streng er fundet skal der kaldes en metode med resultatet som en String eller et Array.
Jeg har prøvet at finde de rette klasser til dette, alternativt skal jeg selv kode det. Jeg giver points for en løsning der bruger mest af de indbygget java funktioner.
Det var sørens er det så simpelt det ser ud til at virke, hvis jeg nu skal placere et timeout håndtering (ved tabt forbindelse). Har du mere af den smarte kode ;-) Jeg kan ikke forstå hvorfor jeg ikke kom på den kode du har brugt, jeg har søgt på nettet og alt muligt.
min kode : public Player() {
try { ServerSocket s = new java.net.ServerSocket(9600); Socket con = s.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line; while((line = reader.readLine()) != null) { // Kald til parser skal på her System.out.println("line ="+line); }
Jeg er nok kommet til at komplicere det helt uden grund, tanken om standard linie skift strejfet mig slet ikke???? desuden forkommer CR slet ikke i strengen i øvrit så at kigge efter en seq. (selv om den kun er på to tegn) er helt unødvendig.
P.S. husk at sende dit svar, det har været en stor hjælp
du faar en exception with timeout - MEN det kan tage lang tid inden du faar timeout, saa hvis du vil lukke hurtigt skal du have en i-am-alive message og afslutte naar den ikke er dukket op indenfor X sekunder
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.