Question

J'utilise un ServerSocket sur mon serveur et Sockets qui utilisent ObjectIOStreams pour envoyer des objets sérialisables sur la connexion réseau. Je développe une version plus essentiellement financière du monopole et des paquets ainsi envoyés et confirmés comme envoyés / reçus est nécessaire. Ai-je besoin de mettre en œuvre ma propre watcher de perte de paquets ou est déjà pris en charge avec (serveur) Sockets?

Je suis surtout poser des questions sur la perte de paquets pendant blips de réseau ou tout le reste, pas d'erreur de connexion complète. Par exemple. frères et sœurs déplacer une plaque de plomb entre mon routeur et l'adaptateur wi-fi de votre ordinateur.

http://code.google. com / p / inégalité / source / browse / # svn / trunk / src / réseau Le code peut être trouvé sous Réseau-> ClientController et Réseau-> Serveur

Était-ce utile?

La solution

Théoriquement; Oui. Il n'y a pas moyen de donner la garantie théorique de 100% que ce qui est envoyé sur la couche matérielle, est reçu de la même manière à l'extrémité de réception.

ce genre de choses soins a déjà été pris pratiquement Cependant, si vous utilisez TCP (Transmission Control Protocol) de; vous ne perdrez aucun paquet. (Si vous utilisez UDP d'autre part (User Datagram Protocol), il est une autre histoire, et il peut très bien être le cas que vous perdre des paquets, ou les recevoir hors service).

Juste regardé brièvement votre code, et il semble que vous utilisez plusieurs threads. Si oui, vous devez être tout à fait prudent avec la synchronisation. Il pourrait très bien être le cas que cela ressemble à un paquet a été abandonné, bien que, il est tout simplement pas traité en raison d'une condition de course dans le programme. (Gardez à l'esprit que l'IUG par exemple, exécute dans son propre fil.)

La meilleure façon de résoudre la synchronisation, je pense, est de mettre la boucle de réseau dans une très petite lecture / boucle mis-en-queue synchronisée, et ramasser les paquets reçus de la file d'attente à chaque fois que vous êtes sûr pas autre thread interviendra.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top