c++ socket 예제

바인딩된 소켓에서 들어오는 연결을 허용합니다. 원격 호스트의 주소 정보는 remote_host 구조에 기록되고 주소 구조의 실제 크기는 *addr_length로 기록됩니다. 즉, 이 accept() 함수는 연결 클라이언트의 주소 정보를 주소 구조에 씁니다. 그런 다음 수락된 연결에 대한 새 소켓 파일 설명자가 반환됩니다. 따라서 새 소켓 파일 설명자가 연결된 클라이언트와 통신하는 데 사용되는 동안 원래 소켓 파일 설명자는 새 연결을 수락하는 데 계속 사용할 수 있습니다. 이 함수는 연결된 소켓을 식별하기 위해 새 소켓 파일 설명기를 반환하거나 오류시 -1을 식별합니다. 큐에 보류 중인 연결이 없고 소켓이 비차단으로 표시되지 않으면 수락() 연결이 있을 때까지 호출을 차단합니다. 널리 사용되는 소켓 유형, 스트림 소켓 및 데이터그램 소켓이 있습니다. 스트림 소켓은 통신을 연속 문자 스트림으로 처리하고 데이터그램 소켓은 전체 메시지를 한 번에 읽어야 합니다. 각 프로토콜은 자체 통신 프로토콜을 사용합니다.

스트림 소켓은 신뢰할 수 있는 스트림 지향 프로토콜인 TCP(전송 제어 프로토콜)를 사용하고 데이터그램 소켓은 신뢰할 수 없고 메시지 지향적인 UDP(유닉스 데이터그램 프로토콜)를 사용합니다. 소켓은 웹을 탐색할 때 사용되는 표준 인터넷 프로토콜에서 다양한 프로토콜을 사용하여 통신하는 데 사용할 수 있습니다. 이러한 패밀리는 비트/socket.h로 정의되며 sys/socket.h에서 자동으로 포함됩니다. 소켓은 서버 프로세스에 할당된 리소스입니다. 서버는 시스템 호출 소켓()을 사용하여 생성하며 다른 프로세스와 공유할 수 없습니다. bind() 호출은 소켓 파일 설명자, 주소 구조 및 주소 구조의 길이를 전달합니다. 이 호출은 포트 20001의 현재 IP 주소에 소켓을 바인딩합니다. 두 번째 인수는 소켓의 유형입니다. 여기에는 파일이나 파이프에서 처럼 연속 스트림에서 문자를 읽는 스트림 소켓과 메시지가 청크로 읽는 데이터그램 소켓이 두 가지 선택 사항이 있습니다. 두 개의 기호 상수는 SOCK_STREAM 및 SOCK_DGRAM입니다. 세 번째 인수는 프로토콜입니다.

이 인수가 0이면(항상 비정상적인 경우를 제외하고) 운영 체제에서 가장 적합한 프로토콜을 선택합니다. 스트림 소켓의 경우 TCP를 선택하고 데이터그램 소켓의 경우 UDP를 선택합니다. 소켓 호출에 대한 간략한 설명입니다. 도메인 및 유형에 대한 다른 많은 선택 사항이 있지만 가장 일반적인 항목입니다. 소켓 맨 페이지를 보려면 여기를 클릭하십시오. * 호출 블록, 비 차단 소켓 대 차단 소켓으로 이동합니다. C의 소켓은 파일 설명기를 사용하여 자신을 식별하기 때문에 파일처럼 행동합니다. 소켓은 read() 및 write()를 사용하여 소켓 파일 설명기를 사용하여 데이터를 수신하고 보낼 수 있는 파일과 매우 유사합니다. 9. 클라이언트에 의해 서버가 적중하면 accept()에 의해 반환된 설명자()를 통해 클라이언트 소켓의 날짜와 시간을 인쇄합니다. 소켓을 만든 후 bind 함수는 addr(사용자 지정 데이터 구조)에 지정된 주소 및 포트 번호에 소켓을 바인딩합니다. 예제 코드에서는 서버를 로컬 호스트에 바인딩하므로 INADDR_ANY를 사용하여 IP 주소를 지정합니다.

1. 소켓을 통해이 통신 이후, 여기에도 소켓을 만들었습니다. socket() 함수의 3번째 인수는 항상 0이어야 하는 프로토콜입니다. 이 사양은 프로토콜 패밀리 내에서 여러 프로토콜을 허용하므로 이 인수는 패밀리에서 프로토콜을 선택하는 데 사용됩니다.

This entry was posted in Uncategorized. Bookmark the permalink.