/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
HJÆÆÆÆLP.... ang URLConnection....
Fra : Ukendt


Dato : 20-07-01 23:52

Hej !

Jeg har et problem ang. en applet jeg er igang med. Denne applet henter via
en URLConnection noget data fra en ASP fil på webserveren. Disse data sender
den så efter noget parsing videre til den side den sidder på v.h.a. et
JSObject. Mit problem er imidlertidigt, at jeg kører 2 tråde, der begge
henter fra serveren, den ene tråd henter 2 forskellige filer hver gang den
henter ( ca 1 gang i sekundet ), og den anden henter 1 hver gang. Den kode
jeg bruger til at hente dataene ser sådan her ud ca :

i en init funktion :

urlstring1 = "http://www.server.dk/fil1.asp";
urlstring2 = "http://www.server.dk/fil2.asp";

try {
url1 = new URL(urlstring1);
url2 = new URL(urlstring2);
} catch (Exception e)
{
// debug

}

Dette virker fint.....

Nu har jeg så en funktion kaldet reconnect(), der ser ud ala det her :

// reconnect
if (!objects_initialized)
{
try {
urlconnection2 = url2.openConnection();
urlconnection2.setUseCaches(false);
urlconnection1 = url1.openConnection();
urlconnection1.setUseCaches(false);
} catch (Exception e){}

objects_initialized = true;
}

try {
urlconnection1.connect();
urlconnection2.connect();
br1 = new BufferedReader(new
InputStreamReader(urlconnection1.getInputStream()));
br2 = new BufferedReader(new
InputStreamReader(urlconnection2.getInputStream()));
}
catch(Exception e) {}

Mine objekter er deklareret sådan her :

URLConnection urlconnection1, urlconnection2;
URL url1,url2;
BufferedReader br1, br2;
boolean objects_initialized=false;

Denne funktion kaldes så fra min tråds run funktion, hvorefter der ventes 1
sekund, og run så hopper op og kører den igen. Et while loop....

Pointen med dette er, at den med ca et sekunds mellemrum, skal kontakte
disse 2 filer, og hente hele det nyeste output. Derefter bliver der
manipuleret lidt med det, og den skal så begynde forfra. Hvis vi f.eks.
siger at fil1.asp returnerer tiden i millisekunder siden 1970, og fil2.asp
returnerer antal gange den er blevet kørt vil de altså hele tiden give nye
forskellige outputs, og jeg vil så hver gang den ovenstående kode bliver
kørt have det nyeste output at manipulere med. Det gør den ovenstående
IKKE..... den første gang den køres virker det fint.... Derefter holder den
op med at virke.... :(

Jeg har haft det til at virke med en anden reconnect kode, der så sådan her
ud :

// reconnect-nogood
try {
urlconnection2 = url2.openConnection();
urlconnection2.setUseCaches(false);
urlconnection1 = url1.openConnection();
urlconnection1.setUseCaches(false);
br1 = new BufferedReader(new
InputStreamReader(urlconnection1.getInputStream()));
br2 = new BufferedReader(new
InputStreamReader(urlconnection2.getInputStream()));
} catch (Exception e){}


Dette virker hver gang........ jeg får altid det nyeste...... Der er dog et
problem. For nogle( læs - en hel del ) computere gør dette at der simpelthen
opstår et flowstop........ Og den bare står og venter i ca 420 sekunder,
indtil den timer out...... Jeg har en fornemmelse af at grunden til at det
opstår er at jeg bruger openConnection næsten 2 gange i sekundet, og at det
kvæler forbindelsen someway.... derfor omstrukturerede jeg til det første
jeg nævnte..... det skal lige siges at flowstoppet ikke synes at opstå i
noget system, nærmest ud af den blå luft, men ofte...........

Er der nogen der kan hjælpe mig ? hvad gør jeg galt ?

Med venlig hilsen og på forhånd tak,
Ulrik Jensen
ulrik@qcom.dk



 
 
Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste