[JAVA] Matériel de communication TCP

Matériel de communication TCP

Mémorandum relatif au TCP

Mon Github

https://github.com/KosigayaSuguru/sample-project/tree/master/test-socket

À propos de l'opération sur la prise fermée

https://okwave.jp/qa/q7163796.html

Il semble que socket.close () envoie FIN. Lorsque vous exécutez réellement close (), le statut de TCP sera changé au moment de close (). Moi: FIN_WAIT2 Adversaire: CLOSE_WAIT devenir.

Par conséquent, l'autre partie n'obtient pas d'erreur même si elle écrit (). (Puisqu'il s'agit de CLOSE_WAIT, l'autre partie n'a pas l'intention de mettre fin à la communication.)

Si l'autre partie bloque la lecture et la met fin de force par une méthode autre que close () (c'est-à-dire autre que l'envoi de FIN), le côté lecture émettra une exception correspondante.

Si l'autre partie écrit () après avoir exécuté close (), la communication s'arrête là en termes de TCP. À partir de l'état de votre FIN_WAIT2 et du CLOSE_WAIT de l'autre partie, seule votre propre ECOUTE est modifiée. Si l'autre partie écrit à nouveau, l'autre partie recevra une exception.

Voir aussi le résumé de mon github.

Socket Comme il n'est pas possible de détecter que le partenaire de communication a été déconnecté, un thread de surveillance qui envoie périodiquement un message de surveillance est nécessaire.

Stream Notez que si vous utilisez Writer, l'unité de manipulation sera constituée d'unités de caractères et vous ne pourrez pas effectuer d'opérations strictes utilisant des octets.

Je ne savais pas qu'il était bloqué par InputStream.read () et j'ai trébuché

http://redfreshet.com/2015/11/01/java_inputstream_read/

Notes sur l'implémentation Java

http://majimem.hatenablog.com/entry/2014/06/11/165732 http://axe1lyze.blogspot.jp/2011/08/java.html?m=1 Il peut être bon d'obtenir le InputStream avant le OutputStream (ou vice versa). (Read () peut fonctionner ...)

Remarques sur l'implémentation Java 2

Après close (), une exception peut être levée dans la partie de bloc de lecture en fonction de l'état de la communication avec l'autre partie. Il est nécessaire d'avoir un indicateur pour gérer l'appel de close (), et si l'indicateur de fermeture est défini, une astuce telle que la suppression de la sortie d'une exception est nécessaire. ..

Recommended Posts

Matériel de communication TCP
Communication TCP (communication socket) en Java (ASCII, Binaire)