Im ersten Aufsatz seit dem Erlernen von Java werde ich über ein Problem schreiben, auf das Anfänger beim Erlernen der Socket-Programmierung leicht stoßen. Dem Beispiel im Lehrbuch folgend, habe ich den folgenden Single-Threaded-Netzwerkkommunikationscode eingegeben:
Der Code sollte für Anfänger ein Muss sein, um die Socket-Programmierung zu erlernen, und die Logik ist relativ einfach. Aber zu Beginn, nachdem meine TCPServer-Klasse und meine TCPClient-Klasse ausgeführt wurden, konnten die Informationen über ihre Interaktion über Streams nicht auf der Konsole gedruckt werden. Ich suchte hier lange nach dem Grund und kam im Grunde zu dem Schluss, dass dies der Fall sein sollte ein Eingabestream oder ein Ausgabestream sein. Aber nach langem Versuch ist das Problem immer noch nicht gelöst. Später entdeckte ich versehentlich, dass die Instanzmethode readLine() der BufferedReader-Klasse erst nach dem Lesen des Newline-Zeichens zurückkehrte. Erst dann entdeckte ich die Ursache der Blockierung. Es stellte sich heraus, dass die Informationen von meinem Client und Server in die Ausgabe geschrieben wurden stream hatte überhaupt keinen Zeilenumbruch. Auf diese Weise kehrt readLine() nie wirklich zurück, sodass beide Enden keinen Inhalt in den Ausgabestream schreiben und die Konsole den Inhalt natürlich nicht drucken kann.
Dieses Problem ist eigentlich recht niedrig, aber es gibt keine Garantie dafür, dass Anfänger es nicht schaffen. Bitte machen Sie hier eine kurze Notiz, um sich daran zu erinnern, auf Details zu achten.
Das obige ist der detaillierte Inhalt vonBeispielcode für Single-Threaded-Netzwerkkommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!