blocage sur la lecture d'un socket - Java - Programmation
MarshPosté le 24-07-2006 à 10:47:52
Bonjour, je réalise une interface entre deux système, la machine A établit une connexion sur mon programme via un socket, je lis ce qu'elle m'envoie, je redistribue dans une autre database, et j'envoie un ack propre a la machine A de confirmation de bonne réception et traitement du record.
Ce qui se passe d'étrange c'est que la lecture sur mon socket se fait très rapidement au début, 150-200 records, puis passé ce cap les réception sont beaucoup plus lentes, une toutes les 3 secondes, puis au bout de +/- une minute cela reprend rapidement, etc... La machine A ne semble pas en cause car ses envois sur d'autres interfaces ne montrent pas ces faiblesses.
Le traitement que j'effectue sur les records ne sont pas la cause non plus car je les ai écartés pour tester et le comportement est le même.
Le code est vraiment basique:
Code :
while (true){
userInput = "";
while(true){
int carRead = in.read(buffer);
if (carRead != 0){
userInput+= new String(buffer,0,carRead-1);
if (buffer[carRead-1] == 10){
break;
}
}else{
Thread.sleep(5);
}
}
// mon traitement
out.println(ack); //le ack technique pour l'autre machine
}
j'ai essayé de passer par des BufferedReader, etc, le comportement est toujours le même.
Marsh Posté le 24-07-2006 à 10:47:52
Bonjour,
je réalise une interface entre deux système, la machine A établit une connexion sur mon programme via un socket, je lis ce qu'elle m'envoie, je redistribue dans une autre database, et j'envoie un ack propre a la machine A de confirmation de bonne réception et traitement du record.
Ce qui se passe d'étrange c'est que la lecture sur mon socket se fait très rapidement au début, 150-200 records, puis passé ce cap les réception sont beaucoup plus lentes, une toutes les 3 secondes, puis au bout de +/- une minute cela reprend rapidement, etc...
La machine A ne semble pas en cause car ses envois sur d'autres interfaces ne montrent pas ces faiblesses.
Le traitement que j'effectue sur les records ne sont pas la cause non plus car je les ai écartés pour tester et le comportement est le même.
Le code est vraiment basique:
j'ai essayé de passer par des BufferedReader, etc, le comportement est toujours le même.
merci de votre aide