Java를 배운 후 처음으로 소켓 프로그래밍을 배울 때 접하기 쉬운 문제에 대해 글을 쓰겠습니다. 교과서의 예제에 따라 다음과 같은 단일 스레드 네트워크 통신 코드를 입력했습니다.
이 코드는 소켓 프로그래밍 초보자가 반드시 입력해야 하며 논리는 비교적 간단합니다. 하지만 처음에는 TCPServer 클래스와 TCPClient 클래스를 실행한 후 두 스트림 간의 상호 작용에 대한 정보를 콘솔에 인쇄할 수 없었습니다. 나는 오랫동안 그 이유를 온라인으로 검색하여 기본적으로 확인했습니다. 입력 스트림이거나 차단된 출력 스트림이어야 합니다. 그러나 오랫동안 노력한 후에도 문제는 여전히 해결되지 않았습니다. 나중에 우연히 BufferedReader 클래스의 readLine()이 개행 문자를 읽은 후에만 반환된다는 사실을 발견했습니다. 그제서야 클라이언트와 서버가 출력에 쓴 정보가 차단된 것으로 나타났습니다. 스트림에는 개행 문자가 전혀 없습니다. 이러한 방식으로 readLine()은 실제로 반환되지 않으므로 양쪽 끝이 출력 스트림에 내용을 쓰지 않으며 콘솔은 자연스럽게 내용을 인쇄할 수 없습니다.
이 문제는 사실 꽤 낮은 수준이지만, 초보자가 풀지 못할 것이라는 보장은 없습니다. 세부 사항에 주의를 기울여야 함을 상기시키기 위해 여기에 간략한 메모를 작성해 주십시오.
위 내용은 단일 스레드 네트워크 통신의 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!