Java를 사용하여 네트워크 소프트웨어를 개발하는 것은 매우 편리하고 강력합니다. 이러한 Java의 강력한 기능은 고유하고 강력한 네트워크용 API 세트에서 비롯되며 모두 java.net 및 패키지에 있습니다. javax.net. 이 기사에서는 소켓(Socket)의 개념을 소개하고, 네트워크 API를 사용하여 소켓을 조작하는 방법을 예제를 통해 설명합니다. 이 기사를 마치면 저사양 네트워크 통신 소프트웨어를 작성할 수 있습니다.
소켓이란 무엇인가요?
네트워크 API는 일반적으로 Java 프로그램과 TCP/IP 네트워크 기반의 다른 프로그램 간의 통신에 사용됩니다. 네트워크 API는 통신을 위해 소켓을 사용합니다. 소켓은 두 프로그램 간의 통신 연결에서 종점으로 간주될 수 있습니다. 한 프로그램이 소켓에 정보를 쓰고, 소켓은 정보가 다른 프로그램으로 전송될 수 있도록 해당 정보를 다른 소켓으로 보냅니다. 그림 1과 같이
그림 1을 분석해 보겠습니다. 호스트 A의 프로그램 A는 소켓에 정보를 씁니다. 소켓의 내용은 호스트 A의 네트워크 관리 소프트웨어에 의해 액세스되며 이 정보는 호스트 A의 네트워크를 통해 전달됩니다. 카드는 호스트 B로 전송됩니다. 호스트 B의 네트워크 인터페이스 카드는 이 정보를 수신한 후 호스트 B의 네트워크 관리 소프트웨어로 보냅니다. 네트워크 관리 소프트웨어는 이 정보를 호스트 B의 소켓에 저장합니다. 소켓. 이 메시지를 읽어보세요.
그림 1의 네트워크에 세 번째 호스트인 Host C가 추가되었다고 가정할 때, Host A는 Host C가 아닌 Host B로 정보가 올바르게 전송되었는지 어떻게 알 수 있을까요? TCP/IP 기반 네트워크의 각 호스트에는 고유한 IP 주소가 할당됩니다. IP 주소는 2진수로 변환되지 않으므로 일반적으로 198.163.227.6과 같이 소수점으로 구분됩니다. , 표시된 모든 IP 주소는 네 부분으로 구성되어 있으며 각 부분의 범위는 0-255이며 8비트 주소를 나타냅니다.
IP 주소는 모두 IP 프로토콜 버전 4(IPv4라고 함)에 규정된 32비트 주소라는 점에 주목할 필요가 있습니다. 현재 IPv4 주소가 거의 고갈되었기 때문에 IPv6 주소가 점차 IPv4 주소를 대체하고 있으며, IPv6 주소는 128비트 부호 없는 정수입니다.
그림 1에서 네트워크의 호스트 B에 두 번째 프로그램이 추가되었다고 가정하면, 어떻게 호스트 A에서 전송된 정보가 새로 추가된 프로그램이 아닌 프로그램 B로 올바르게 전달될 수 있을까요? 이는 TCP/IP 네트워크 통신을 기반으로 하는 모든 프로그램에는 고유한 포트와 포트 번호가 할당되기 때문입니다. 포트는 소켓에 입출력 정보를 유지하는 데 사용되는 정보 버퍼이며, 포트 번호는 16비트의 부호 없는 정수입니다. 호스트의 각 프로그램을 구별하기 위한 0-65535 범위(포트 번호는 집의 방 번호와 같습니다) 256 이하의 짧은 포트 번호는 표준 응용 프로그램용으로 예약되어 있습니다. 소켓은 IP 주소, 포트 및 포트 번호로 결합되어 전체가 각 소켓을 구별할 수 있도록 합니다. 스트림 소켓과 자체 주소 지정 데이터라는 두 가지 유형의 소켓에 대해 이야기해 보겠습니다.
스트림 소켓
두 네트워크 애플리케이션 간에 정보를 주고받을 때마다 스트림 소켓은 실제로 정보가 목적지에 도달할 때 올바른지 확인하기 위해 TCP 프로토콜을 사용하여 설정되어야 합니다. 네트워크에서 IP 패킷이 손실되거나 전송 중에 오류가 발생할 수 있습니다. 두 경우 모두 수신자인 TCP는 IP 패킷을 다시 보내기 위해 발신자 TCP에 연결합니다. 이를 두 스트림 소켓 간의 안정적인 연결 설정이라고 합니다.
위 내용은 Java Socket 프로그래밍(1부)(1)의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!