.net의 소켓 지식 정보
1. 소켓이란 무엇입니까?
소위 소켓은 일반적으로 "소켓"이라고도 합니다. 애플리케이션은 일반적으로 "소켓"을 통해 네트워크에 요청하거나 응답합니다. ". J2SDK-1.3을 예로 들면 Socket 및 ServerSocket 클래스 라이브러리는 java .net 패키지에 있습니다. ServerSocket은 서버 측에서 사용되고, Socket은 네트워크 연결을 설정할 때 사용됩니다. 연결이 성공하면 애플리케이션의 양쪽 끝에서 소켓 인스턴스를 생성하고 이 인스턴스를 작동하며 필요한 세션을 완료합니다. 네트워크 연결의 경우 소켓은 동일하며 서버 측이나 클라이언트 측에서 차이가 없습니다. Socket이든 ServerSocket이든 해당 작업은 SocketImpl 클래스와 해당 하위 클래스를 통해 완료됩니다.
중요 소켓 API
중요 소켓 API: java.net.Socket은 java.lang.Object에서 상속되며, 아래에 세 가지가 소개되어 있습니다. 가장 자주 사용되는 방법에 대해서는 JDK-1.3 설명서에서 다른 방법을 볼 수 있습니다.
Accept 메소드는 연결이 승인되고 클라이언트의 Socket 객체 인스턴스를 반환할 때까지 "차단"하는 데 사용됩니다. "차단"은 세션이 생성될 때까지 프로그램이 일시적으로 이 위치에 "머무르게" 한 다음 프로그램이 계속되는 것을 의미합니다. 일반적으로 "차단"은 루프로 인해 발생합니다.
getInputStream 메소드는 네트워크 연결 입력을 획득하고 InputStream 객체 인스턴스를 반환합니다.
getOutputStream 메소드 연결의 다른 쪽 끝은 입력을 가져오고 OutputStream 객체 인스턴스를 반환합니다. 참고: getInputStream 및 getOutputStream 메소드 모두 IOException을 생성할 수 있으며, 이 메소드가 반환하는 스트림 객체는 일반적으로 다른 스트림 객체에서 사용되기 때문에 이를 포착해야 합니다.
2. 서버-클라이언트 모델 프로그램을 개발하는 방법
개발 원칙:
서버는 지정된 포트를 수신하기 위해 ServerSocket을 사용합니다. 마음대로(1024 이하의 포트는 일반적으로 예약된 포트이므로 일부 운영 체제에서는 임의로 사용할 수 없으므로 1024보다 큰 포트를 사용하는 것이 좋습니다) 고객이 연결한 후 세션이 생성됩니다. 세션이 완료된 후 연결이 닫힙니다.
클라이언트는 소켓을 사용하여 네트워크에 있는 서버의 특정 포트에 연결 요청을 보냅니다. 연결이 성공하면 세션이 완료된 후 소켓이 닫힙니다. 클라이언트는 열린 포트를 지정할 필요가 없으며 일반적으로 1024 이상의 포트를 임시적이고 동적으로 할당합니다.
소켓 인터페이스는 TCP/IP 네트워크의 API입니다. 소켓 인터페이스는 프로그래머가 TCP/IP 네트워크에서 애플리케이션을 개발하는 데 사용할 수 있는 많은 기능이나 루틴을 정의합니다. 인터넷에서 TCP/IP 네트워크 프로그래밍을 배우려면 소켓 인터페이스를 이해해야 합니다. 소켓 인터페이스의 설계자들은 먼저 인터페이스를 Unix 운영 체제에 배치했습니다. 유닉스 시스템의 입출력을 이해하면 소켓을 이해하기 쉽다. 네트워크 소켓 데이터 전송은 특별한 종류의 I/O이며 소켓도 파일 설명자입니다. 소켓에는 파일을 여는 것과 유사한 Socket()이라는 함수도 있습니다. 이 함수는 정수 소켓 설명자를 반환합니다. 후속 연결 설정, 데이터 전송 및 기타 작업은 모두 이 소켓을 통해 구현됩니다.
일반적으로 사용되는 두 가지 소켓 유형은 스트리밍 소켓(SOCK_STREAM)과 데이터그램 소켓(SOCK_DGRAM)입니다. 스트리밍은 연결 지향 TCP 서비스 응용 프로그램을 목표로 하는 연결 지향 소켓입니다. 데이터그램 소켓은 연결 없는 UDP 서비스 응용 프로그램에 해당하는 연결 없는 소켓입니다.
소켓 생성 소켓을 생성하기 위해 프로그램은 파일 설명자와 유사한 핸들을 반환하는 소켓 함수를 호출할 수 있습니다. 소켓 함수의 프로토타입은 다음과 같습니다. int 소켓(int 도메인, int 유형, int 프로토콜); domain은 사용된 프로토콜 계열(일반적으로 인터넷 프로토콜 계열(TCP/IP 프로토콜 계열)을 나타내는 AF_INET)을 지정합니다. 소켓 유형: SOCK_STREAM 또는 SOCK_DGRAM, 소켓 인터페이스는 원래 소켓(SOCK_RAW)도 정의하여 프로그램이 하위 수준 프로토콜을 사용할 수 있도록 하며 일반적으로 값 0이 할당됩니다. Socket() 호출은 후속 호출에서 사용할 수 있는 정수 소켓 설명자를 반환합니다. 소켓 설명자는 설명자 테이블 항목을 가리키는 내부 데이터 구조에 대한 포인터입니다. 소켓 함수를 호출하면 소켓 실행 본문이 소켓을 생성합니다. 실제로 "소켓 생성"은 소켓 데이터 구조에 대한 저장 공간을 할당하는 것을 의미합니다. 소켓 실행은 설명자 테이블을 관리합니다. 두 네트워크 프로그램 간의 네트워크 연결에는 통신 프로토콜, 로컬 프로토콜 주소, 로컬 호스트 포트, 원격 호스트 주소 및 원격 프로토콜 포트의 다섯 가지 유형의 정보가 포함됩니다. 소켓 데이터 구조에는 이러한 다섯 가지 유형의 정보가 포함되어 있습니다. 소켓은 측정 소프트웨어에도 널리 사용됩니다