[JAVA] TCP-Kommunikationsmaterial

TCP-Kommunikationsmaterial

TCP-bezogenes Memorandum

Mein Github

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

Über die Bedienung der geschlossenen Steckdose

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

Es scheint, dass socket.close () FIN sendet. Wenn Sie close () tatsächlich ausführen, wird der Status von TCP zum Zeitpunkt von close () geändert. Ich: FIN_WAIT2 Gegner: CLOSE_WAIT werden.

Daher erhält die andere Partei keinen Fehler, selbst wenn sie schreibt (). (Da es sich um CLOSE_WAIT handelt, hat die andere Partei nicht die Absicht, die Kommunikation zu beenden.)

Wenn die andere Partei das Lesen blockiert und es mit einer anderen Methode als close () (dh außer dem Senden von FIN) zwangsweise beendet, gibt die Leseseite eine entsprechende Ausnahme aus.

Wenn die andere Partei nach der Ausführung von close () schreibt (), endet die Kommunikation dort in Bezug auf TCP. Vom Status Ihres FIN_WAIT2 und des CLOSE_WAIT des anderen Teilnehmers wird nur Ihr eigenes HÖREN geändert. Wenn der andere Teilnehmer erneut schreibt, tritt auf der anderen Seite eine Ausnahme auf.

Siehe auch die Zusammenfassung meines Githubs.

Socket Da nicht erkannt werden kann, dass der Kommunikationspartner getrennt wurde, ist ein Überwachungsthread erforderlich, der regelmäßig eine Überwachungsnachricht sendet.

Stream Beachten Sie, dass bei Verwendung von Writer die Handling Unit Zeicheneinheiten sind und Sie keine strengen Operationen mit Bytes ausführen können.

Ich wusste nicht, dass es von InputStream.read () blockiert wurde und stolperte

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

Hinweise zur Java-Implementierung

http://majimem.hatenablog.com/entry/2014/06/11/165732 http://axe1lyze.blogspot.jp/2011/08/java.html?m=1 Es kann sinnvoll sein, den InputStream vor dem OutputStream abzurufen (oder umgekehrt). (Read () kann funktionieren ...)

Hinweise zur Java-Implementierung 2

Nach close () kann abhängig vom Kommunikationsstatus mit der anderen Partei eine Ausnahme im Leseblockteil ausgelöst werden. Es ist erforderlich, ein Flag zu haben, um zu verwalten, dass close () aufgerufen wird. Wenn das close-Flag gesetzt ist, ist ein Trick wie das Unterdrücken der Ausgabe einer Ausnahme erforderlich. ..

Recommended Posts

TCP-Kommunikationsmaterial
TCP-Kommunikation (Socket-Kommunikation) in Java (ASCII, Binär)