mobile menu

The Arrow Newsletter

mobile menu

socketchannel 예제

달리 명시되지 않는 한 쓰기 작업은 요청된 모든 바이트를 작성한 후에만 반환됩니다. 일부 유형의 채널은 상태에 따라 바이트 중 일부만 쓸 수도 있지만 전혀 쓸 수 없습니다. 예를 들어 비차단 모드의 소켓 채널은 소켓의 출력 버퍼에서 무료인 것보다 더 많은 바이트를 쓸 수 없습니다. SocketChannel에서 데이터를 읽을 때 버퍼로 데이터를 읽습니다. 이 예제에서는 할당() 메서드를 사용하여 100바이트 용량의 ByteBuffer를 만듭니다. 그런 다음 이 버퍼를 SocketChannel의 read() 메서드로 전달합니다. 자바 니오 응용 프로그램을 실행하려면 FileReceiver 클래스를 마우스 오른쪽 버튼으로 클릭하십시오 -> Java 응용 프로그램으로 실행합니다. 유사한 단계를 따르고 FileSender 클래스를 실행합니다. 개발자는 예제를 디버깅하고 모든 단계 후에 어떤 일이 발생하는지 확인할 수 있습니다! 읽기 작업은 버퍼를 채우지 못할 수 있으며 실제로 는 바이트를 전혀 읽지 않을 수 있습니다.

그렇게 하는지 여부는 채널의 특성과 상태에 따라 달라집니다. 예를 들어 비차단 모드의 소켓 채널은 소켓의 입력 버퍼에서 즉시 사용할 수 있는 바이트보다 더 많은 바이트를 읽을 수 없습니다. 마찬가지로 파일 채널은 파일에 남아 있는 것보다 더 많은 바이트를 읽을 수 없습니다. 그러나 채널이 차단 모드에 있고 버퍼에 하나 이상의 바이트가 남아 있는 경우 이 메서드는 하나 이상의 바이트를 읽을 때까지 차단됩니다. 이전 섹션에서 얻은 지식을 강화하기 위해 완전한 클라이언트-서버 예제를 구축할 것입니다. 이 예제는 지정된 버퍼의 데이터를 읽고 소켓채널에 바이트 시퀀스를 기록합니다. 소켓에 데이터를 출력하기 위해채널 우리는 소켓 채널의 쓰기() 방법을 사용합니다. 이 자습서에서는 간단한 예제를 사용하여 SocketChannel의 기능을 설명하고 개발자가 이 작업을 달성하는 데 필요한 기본 구성을 이해하는 데 도움이 됩니다. 그게 이 튜토리얼의 전부이며,이 기사가 당신이 찾고있던 무엇이든 당신을 제공 바랍니다. 선택 키에 개체를 연결할 수 있습니다. 때때로 우리는 채널에 사용자 정의 ID를 제공하거나 우리가 추적 할 수있는 Java 객체의 종류를 첨부 할 수 있습니다. .

선택기는 Selector 클래스의 정적 열기 메서드를 호출하여 만들 수 있으며, 이 메서드는 시스템의 기본 선택 기 공급자를 사용하여 새 선택기를 만들 수 있습니다. t: 이 채널이 비차단 모드인 경우 이 메서드를 호출하면 비차단 연결 작업이 시작됩니다. 로컬 연결에서 발생할 수 있는 것처럼 연결이 즉시 설정된 경우 이 메서드는 true를 반환합니다. 그렇지 않으면 이 메서드는 false를 반환하고 나중에 finishConnect 메서드를 호출하여 연결 작업을 완료해야 합니다. 소켓 옵션은 setOption 메서드를 사용하여 구성됩니다. 소켓 채널은 다음 옵션을 지원합니다: 선택기를 사용하여 SocketChannel 클라이언트-서버 통신의 블록 다이어그램을 보자: 소켓 채널은 java.nio.channels 패키지에 속하는 선택 가능한 채널이며, 읽기 또는 쓰기에 사용됩니다. 스트림 지향 데이터.