cpp socket 예제

socket() 함수의 3번째 인수는 항상 0이어야 하는 프로토콜입니다. 이 사양은 프로토콜 패밀리 내에서 여러 프로토콜을 허용하므로 이 인수는 패밀리에서 프로토콜을 선택하는 데 사용됩니다. 다음은 man 페이지의 설명입니다: „수신 대기 중인 연결 큐에서 첫 번째 연결 요청을 추출하여 sockfd를 만들고, 새 연결된 소켓을 만들고, 해당 소켓을 참조하는 새 파일 설명기를 반환합니다. 새로 만든 소켓이 수신 대기 상태에 있지 않습니다. 원래 소켓 양말은이 호출의 영향을받지 않습니다“. 위의 것은 매우 간단하고 제한된 tcp 클라이언트입니다. 실제 응용 프로그램에서 사용되기 전에 여러 가지 방법으로 향상되어야 합니다. 예를 들어 수신 함수는 매우 유연하지 않습니다. 지정된 바이트 수만 수신한 다음 중지합니다. 실패없이 전체 회신을받을 수 있도록 코딩해야합니다. tcp 및 udp 프로토콜모두에서 작동하도록 클래스를 수정할 수 있습니다. 서버가 주소에 바인딩되면 서버는 소켓에서 listen()를 호출할 수 있습니다. 이 호출의 매개 변수는 소켓(fd)이며 최대 큐에 대기된 연결 수는 backlog_queue_size까지 요청됩니다.

성공 시 0을 반환하고 오류에 대해 -1을 반환합니다. 서버 소켓을 수동 모드로 두어 클라이언트가 서버에 연결될 때까지 기다립니다. 백로그는 sockfd에 대한 보류 중인 연결큐가 증가할 수 있는 최대 길이를 정의합니다. 큐가 가득 찼을 때 연결 요청이 도착하면 클라이언트가 ECONNREFUSED를 표시하는 오류를 받을 수 있습니다. 계속하기 전에 기본 소켓 작업에 대한 개념을 명확하게 하는 것이 좋습니다. 이 소켓 프로그래밍 자습서가 도움이 될 수 있습니다. 이제 tcp_client라는 간단한 클래스를 코딩하여 특정 포트 번호의 tcp 서버에서 데이터를 보내고 받는 것과 같은 기본 클라이언트 측 소켓 작업을 수행하는 데 사용할 수 있습니다. 유닉스 도메인의 소켓 주소는 기본적으로 파일 시스템의 항목인 문자 문자열입니다. 널리 사용되는 소켓 유형, 스트림 소켓 및 데이터그램 소켓이 있습니다. 스트림 소켓은 통신을 연속 문자 스트림으로 처리하고 데이터그램 소켓은 전체 메시지를 한 번에 읽어야 합니다. 각 프로토콜은 자체 통신 프로토콜을 사용합니다.

스트림 소켓은 신뢰할 수 있는 스트림 지향 프로토콜인 TCP(전송 제어 프로토콜)를 사용하고 데이터그램 소켓은 신뢰할 수 없고 메시지 지향적인 UDP(유닉스 데이터그램 프로토콜)를 사용합니다. 전송 계층의 구조를 결정하는 소켓에는 여러 가지 유형이 있습니다. 가장 일반적인 유형은 스트림 소켓및 데이터그램 소켓입니다. 소켓에는 스트림 소켓과 데이터그램 소켓이 가장 많이 사용됩니다. 소켓 의 유형은 또한 /usr/include/bits/socket.h [cpp] /** C++ 클라이언트 예제소켓을 사용하여 정의됩니다 */ #include /cout #include //printf #include /strlen #include //문자열 #include // 소켓 #include /inet_addr #include //hostent 이 자습서의 예제는 TCP 프로토콜을 사용하여 인터넷 도메인의 소켓을 사용합니다. 인터넷 도메인의 소켓 주소는 호스트 컴퓨터의 인터넷 주소로 구성됩니다(인터넷의 모든 컴퓨터에는 고유한 32비트 주소(IP 주소라고도 함). 또한 각 소켓에는 해당 호스트에 포트 번호가 필요합니다. 포트 번호는 16비트 서명되지 않은 정수입니다. 낮은 숫자는 표준 서비스를 위해 유닉스에서 예약되어 있습니다. 예를 들어 FTP 서버의 포트 번호는 21입니다. 표준 서비스는 클라이언트가 주소를 알 수 있도록 모든 컴퓨터에서 동일한 포트에 있어야 합니다.

그러나 2000이상의 포트 번호는 일반적으로 사용할 수 있습니다.

socket() 함수의 3번째 인수는 항상 0이어야 하는 프로토콜입니다. 이 사양은 프로토콜 패밀리 내에서 여러 프로토콜을 허용하므로 이 인수는 패밀리에서 프로토콜을 선택하는 데 사용됩니다. 다음은 man 페이지의 설명입니다: „수신 대기 중인 연결 큐에서 첫 번째 연결 요청을 추출하여 sockfd를 만들고, 새 연결된 소켓을 만들고, 해당 소켓을 참조하는 새 파일 설명기를 반환합니다. 새로 만든 소켓이 수신 대기 […] , 2019