기본 사항을 사용하여 클라이언트 및 서버 프로그램 작성 소개. 네트워크 연결에 필요한 매개변수는 파일 I/O 이상입니다. Java Æ 연결 지향 프로토콜의 TCP 소켓 프로그램.
Socket 프로그램 작성 구조 (4/4)
Socket 생성
Socket Data Structure 3. Socket Address Structure
Socket 생성 (1/5)
Socket 생성 (2/5)
Socket 생성 (3/5)
Socket 생성 (4/5)
PF_INET / AF_INET
PF_INET6 / AF_INET6
PF_UNIX / AF_UNIX
SOCK_STREAM
SOCK_DGRAM
SOCK_RAW
- Socket 생성 (5/5)
- Socket Data Structure (1/5)
- 프로토콜 Type (TCP or UDP) 2. 자신의 IP 주소
- 자신의 포트 번호 4. 상대방의 IP 주소
- Socket Data Structure (2/5)
- Socket 의 Data Structure
- Socket Data Structure (3/5)
- Family
- Socket Data Structure (4/5)
- Type
Socket에서 미디어를 송수신하기 위해 필요한 정보입니다. 데이터 구조 (소켓 구조. 소켓 프로그램에 대한 필요한 정보를 저장하기 위해 지원되는 프로토콜 그룹에서 소켓이 사용되는 프로토콜을 선택하십시오.
SOCK_STREAM, SOCK_DGRAM - 저 수준 제어형
Socket Data Structure (5/5)
Stream Socket
Datagram Socket
Raw Socket
- Socket Address’s Data Structure (1/7)
- Socket Address’s Data Structure (2/7)
- Socket Address’s Data Structure (3/7)
- Socket Address’s Data Structure (4/7)
- Socket Address’s Data Structure (5/7)
- Socket Address’s Data Structure (6/7)
- Socket Address’s Data Structure (7/7)
사용자의 서버 IP와 포트에 대한 입력을 받고 sockaddr_in 구조를 구성 */.
네트워크 프로그래밍을 위한 함수
시스템 호출은 개발의 편의를 위해 운영 체제 자체의 기능인 운영 메커니즘을 호출하는 것입니다. 내부 운영 체제 모듈이 호출을 처리합니다.
제어권한 이동 ( 운영체제 > 시스템 호출 인터페이스 > 어플리케이션 )
소켓 함수를 이용한 클라이언트 / 서버의 구조
네트워크 통신에 사용할 새 소켓을 만듭니다. 서버 측에서 생성된 첫 번째 소켓에는 주소 값이 없습니다. ¾ 소켓에 로컬 주소와 포트(잘 알려진 포트)를 할당하여 활성화합니다.
TCP 서버에서 호출되어 연결된 Queue의 시작 부분에 데이터를 반환합니다. 2. Queue가 비어 있으면 클라이언트가 연결할 때까지 차단합니다. 3. 함수가 정상적으로 종료되면 새로 연결된 파일 디스크립터가 반환됩니다.
¾ cliaddr: 클라이언트의 IP 주소와 로컬 포트를 설정하는 구조체. 클라이언트에서 서버로의 연결을 담당합니다. 다른 서버의 소켓 설명자 및 주소 정보를 기반으로 서버에 연결을 시도합니다.
클라이언트가 connect()를 호출하기 전에 bind()를 호출하지 않아도 임의의 포트와 로컬 IP가 설정된 상태에서 자동으로 함수가 호출됩니다. ¾ servaddr: 연결할 서버의 주소와 포트에 대한 정보를 포함하는 구조체 입력.
두 기능 모두 데이터 송수신을 담당하지만 recvfrom(수신) 및 sendto(보내기) 기능은 UDP 통신에 사용됩니다. 비구속적 특성을 고려하면 송수신에 필수적인 정보임을 알 수 있다. 소켓을 닫은 후에는 이전에 연결된 피어로 데이터를 보낼 수 없습니다.
큐에 있는 데이터의 경우 해당 데이터 int close(int sockfd, int howto)를 수신한 후 소켓이 닫힙니다. TCP 연결을 종료하는 역할을 담당하며 옵션에 따라 종료 방법을 사용자 정의할 수 있습니다. 소켓(sockfd)의 지정된 옵션(optname)의 값(optval)과 바이트 수(optlen)를 반환합니다.
소켓(sockfd)에 옵션(optname)을 지정하고 해당 값(optval)과 바이트 수(optlen)를 설정합니다.
옵션의 주요 내용
유닉스에서는 이벤트가 발생했을 때 프로세스에 알리는 수단으로 사용된다.
- poll() 함수
- Thread
- Socket 프로그래밍을 위한
- 바이트 순서 변환 함수 2. 주소 변환 구조체
- 인터넷 주소 변환 함수
- 원격지 호스트 정보를 얻는 함수
- 바이트 순서 변환 함수 (3/3)
- 주소 변환 구조체 (1/5)
사용 예를 선택합니다. i) 스레드는 프로세스와 달리 메모리를 공유할 수 있습니다. 메모리에 저장하는 순서는 프로세서에 따라 올바르지 않습니다. 저장할 메모리의 시작 주소에 데이터의 최하위 바이트 내용을 저장합니다. - DEC VAX 컴퓨터.
저장할 메모리의 시작 주소에 가장 중요한 데이터 바이트의 내용을 저장합니다. Motorola 마이크로프로세서 및 IBM 메인프레임을 기반으로 합니다.
주소 변환 구조체 (2/5)
호스트 정보에 대한 원격 호스트 구조 구조: 호스트 구조.
주소 변환 구조체 (3/5)
주소 변환 구조체 (4/5)
주소 변환 구조체 (5/5)
원격지 호스트 정보를 얻는 함수 (1/2)
- 원격지 호스트 정보를 얻는 함수 (2/2)
해당 호스트에서 실행 중인 모든 서비스에 대한 정보입니다. 서비스의 이름과 해당 프로토콜로 서비스를 가져올 수 있는 기능. 호스트에서 실행 중인 서비스에 대한 정보를 포트 번호로 얻을 수 있는 기능입니다.
클라이언트 / 서버의 작성 방법
작성 절차
- 작성 절차 : 서버 프로그램
- 작성 절차 : 클라이언트 프로그램
- 작성 절차
- 작성 절차 - 연결형 클라이언트
- 작성 절차 - 연결형 Server
- 작성 절차 - 비연결형 클라이언트
- 작성 절차 - 포트 번호 배정
- 연결형 클라이언트/서버의 작성
서버 프로그램이 먼저 실행 중이어야 합니다. 서버는 socket()을 호출하여 통신에 사용할 소켓을 엽니다. 소켓 번호와 자신의 소켓 주소를 bind()로 바인딩합니다.
클라이언트가 연결 요청을 수신하면 처리를 위해 accept()가 호출됩니다. 클라이언트가 connect() 호출로 연결을 요청하면 처리됩니다. connect()를 호출하여 서버에 연결 요청을 보냅니다.
대부분의 클라이언트는 bind()를 사용하여 특정 포트 번호를 지정할 필요가 없습니다(클라이언트는 일반적으로 연결하는 클라이언트 수와 빈도에 따라 시스템에서 자동으로 할당하는 포트 번호를 사용합니다). ii) 확장 및 처리량이 필요합니다. 클라이언트 간 또는 서버와 클라이언트 간 데이터의 신뢰성.
고객요청 처리방식 동시처리형 단순형.
단순 연결형 클라이언트 / 서버
다중 연결 연결형 클라이언트 / 서버
- 비연결형 클라이언트/서버의 작성
단순 비 연결형 클라이언트 / 서버
recvfrom */ 함수로 서버에서 보낸 데이터를 처리합니다.
동시 처리 비 연결형 클라이언트 / 서버
수신을 위한 데이터 처리는 스레드에 의해 수행됩니다. 현재의 경우 실용성은 별로 없지만 실제로는 수신된 데이터를 처리하는 데 많은 작업이 필요할 수 있습니다. Thread*/에 의해 처리된 클라이언트 데이터를 전송합니다.
채팅을 위한 클라이언트/서버 프로그램 작성
채팅 프로그램 구조
- 채팅 프로그램 구조
- 채팅 서버 프로그램 개요 및 구조 (1)
- 채팅 서버 구조
- 채팅 Client 프로그램 개요 및 구조 (2)
채팅 서버와 클라이언트 간의 연결입니다. 클라이언트가 연결되면 연결 여부를 확인하기 위해 소켓 디스크립터의 상태가 변경됩니다. 각 서버 구조는 연결된 클라이언트가 반환한 정보로 업데이트됩니다.
고객이 받는 데이터는 동일한 대화방에 연결되어 간헐적으로 검색됩니다. 서버: 서버에 연결된 클라이언트 소켓 디스크립터를 확인합니다. 서버에 연결된 클라이언트 소켓 디스크립터[각 방의 사용자 구조 포함]를 fd_set */로 설정합니다.
서버에서 정렬하여 전송하기 때문에 클라이언트에서 별도로 처리할 필요가 없습니다.