Newsgroup: it.comp.java
Titolo: Ma che succede?

Davvero molto mooolto strano...
Se sono connesso in dialup, una mia classe (un thread) crea un Socket
verso la porta 80 di un sito.
Invia la richiesta GET con il metodo writeBytes("GET... ecc") e legge
la risposta col metodo readByte(..) un byte alla volta, per capire
interpretare il risultato della GET.
Funziona perfettamente!
Poi vado in uffcio, eseguo la stessa classe e... il socket si
connette, invia la richiesta e... BLOCCO TOTALE DEL PC.
Mi si blocca tutto, compreso il mouse, tutto congelato per 30 secondi,
poi si sveglia per 10 secondi e poi blocco totale di nuovo, fino a un
minuto dopo aver chiuso il programma (nella pausa di 10 sec).
Tutte le connessioni cadono, la scheda di rete sembra morta, la
connessione non c'è più: devo staccare e riattaccare il cavo di rete
per poter essere di nuovo connesso.
Ho analizzato con uno sniffer e con alcune print di debug cosa
succede: la connessione si stabilisce, la richiesta GET viene inviata
e poi, prima della risposta del servet STOP, tutto in blocco.
In dialup (56k o GPRS) tutto questo non succede e funziona tutto
liscio come l'olio.
A parte i fatto che il sottosistema dello stack TCP/IP dovrebbe essere
trasparente alle applicazioni (anche tramite api winsock), che diavolo
succede con la JVM?
Se volete vi posto il codice...
Tutto questo è semplicemente assurdo!

 Tutto questo è semplicemente assurdo!
Forse che forse e' un bug, o della JVM (mi pare improbabile, se e' 
quella della Sun), o molto piu' probabilmente del sistema operativo. 
Prova ad aggiornare, se non altro la prima, possibilmente anche il 
secondo. Io non ti so aiutare, ma prova a cercare su google se qualcun 
altro ha avuto un problema del genere.
Anyway, il linguaggio Java non ha nulla a che fare con questo.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

quella della Sun), o molto piu' probabilmente del sistema operativo. 
Credo di si...
Ho provato a eseguire lo stesso programma su altri pc, nella stessa
rete locale: funziona benissimo.
Allora ho provato a "tornare alle origini" usando per leggere e
scivere sul socke solo i metodi read(byte[]...) e write(byte[]...)
degli Stream.
Ebbene: funziona! Non si pianta più!
Prima usavo, per scrivere la writeBytes(String): i dati venivano
effettivamente scritti ma, nel momento in cui leggevo... bang tutto
bloccato.
Bene, ho risolto ma... perchè il problema si verifica solo sul mio pc?
Perchè se non uso una cannessione in lan ma dialup non succede? Perchè
su altri pc, con lo stesso S.O (WinXP) e la stessa JVM connessi alla
stessa rete non si presenta?
E' un mistero...

 per poter essere di nuovo connesso.
[CUT]
Sicuro di non essere dietro un firewall particolare?
-- 
Marco "Duff" Palermo
http://www.marcoduff.com/

Sicuro di non essere dietro un firewall particolare?
Si, sono dietro un potentissimo firewall aziendale ma non c'entra
nulla.
Se mi collego via Explorer, funziona. Via Telnet funziona...
E il problema si presenta con qualsiasi host usi, da google a libero,
non dipende da questo.

 [CUT]
Ti sei dato da solo la risposta ;)
Seriamente, purtroppo: l'informatica e' una scienza in cui tutto e' 
perfettamente deterministico, ma le cui applicazioni pratiche non si sa 
perche' sono tutto meno che questo. Io mi sono arreso all'evidenza dopo 
i primi due anni con un computer ;))))))


 Se mi collego via Explorer, funziona. Via Telnet funziona...
Probabilmente il firewall è molto severo nei confronti del servizio di 
telnet (porta 23).
-- 
+-------------------------+--------------------------------------+
| GNU/Linux Slackware 9.0 | Java                                 |
+-------------------------+--------------------------------------+
| Linux Registered User #313185 at 
http://www.counter.li.org
     |
+----------------------------------------------------------------+

 E' un mistero...
mah!
ci sara qualche differenza tra le due macchine...
Ciao