2010-06-09 10 views
1

Je suis un fichier à travers transférer un réseau local (en utilisant JxtaSocket au cas où vous entendu parler) et je reçois:Qu'est-ce que java.net.SocketTimeoutException: Impossible de recevoir des accusés de réception à distance?

java.net.SocketTimeoutException: Échec de réception ack à proximité de la connexion à distance. à net.jxta.socket.JxtaSocket.close (JxtaSocket.java:1046)

Je voudrais savoir quelles sont les raisons pour lesquelles cela se produirait en premier lieu. Je reçois cette exception à un rythme régulier, après avoir envoyé un fichier (qui est de 2,9 Mo). Tous les autres fichiers sont inférieurs à 1 Mo et fonctionnent correctement.

D'un autre côté, je suppose que c'est peut-être la faute de JXTA.

Aucune réponse ne sera appréciée!

+0

Le logiciel de point de terminaison distant (le client) est-il également écrit par vous? Ou utilisez-vous un protocole pour le transfert de fichiers? –

+0

Tout est écrit par moi et le protocole est TCP classique (en utilisant des constructions JXTA). –

Répondre

0

TCP est un protocole compliqué. Une partie de cela est que lorsque les clients sont en train de fermer leur connexion, le côté demandeur (le côté qui a initialement essayé de fermer) doit attendre un accusé de réception de l'autre côté, pour s'assurer que le côté distant sait que nous fermons la connexion. Malheureusement, il est courant que la prise de contact d'arrêt ne se produise pas correctement (parfois les clients se ferment juste au lieu de passer correctement la poignée de main). En pratique, cela n'a pas vraiment d'importance car toute la communication importante est faite. Bref, ce que vous voyez le plus souvent ici est un client qui se comporte mal, mais je ne m'inquiéterais pas à ce sujet.

Wikipedia a une bonne discussion sur la TCP connection termination protocol

1

Certains membres de la communauté JXTA ont connu ces problèmes avec la version 2.5, mais il a disparu dans 2,6 et 2,7. Cela pourrait expliquer/résoudre cela.