예를 들어 텔넷에 대해 이야기해 보겠습니다. 포트 23의 원격 호스트에 텔넷(클라이언트)을 연결하면 해당 호스트의 프로그램(텔넷, 서버라고 함)이 생겨나게 됩니다. 그것은 들어오는 텔넷 연결을 처리, 로그인 프롬프트 등으로 우리를 설정합니다. 소켓을 만든 후 bind 함수는 addr(사용자 지정 데이터 구조)에 지정된 주소 및 포트 번호에 소켓을 바인딩합니다. 예제 코드에서는 서버를 로컬 호스트에 바인딩하므로 INADDR_ANY를 사용하여 IP 주소를 지정합니다. 이것은 차단 호출입니다. 연결()에 대한 호출을 발행할 때 연결이 이루어지거나 오류가 발생할 때까지 프로그램이 제어권을 되찾지 못하기 때문입니다. 예를 들어 웹 브라우저를 작성한다고 가정해 보겠습니다. 웹 서버에 연결하려고 하지만 서버가 응답하지 않습니다.

이제 connect() API가 중지 단추를 클릭하여 연결 시도를 중지하기를 원합니다. 그러나 그것은 할 수 없습니다. 성공 시 0이 될 수 있는 반환또는 오류시 -1을 기다립니다. 이 자습서에서는 클라이언트 서버 프로그램 예제와 함께 C 및 C++의 TCP/IP 소켓 프로그래밍 개념에 대해 알아보는 데 도움이 됩니다. 선생님 나는 내 어구에 도움이 모든 코드에 감사드립니다. 당신없이 나는 어둠 에 있었다. 나에게 방법을 보여 주셔서 감사합니다. 혹시 내가 당신을 만날 수있는 기회를 얻을 경우 내 인생은 완료 될 것입니다. 구현 여기에서는 클라이언트/서버 모델을 보여 주기 위해 서버와 클라이언트 간에 하나의 hello 메시지를 교환합니다. C의 소켓은 파일 설명기를 사용하여 자신을 식별하기 때문에 파일처럼 행동합니다.

소켓은 read() 및 write()를 사용하여 소켓 파일 설명기를 사용하여 데이터를 수신하고 보낼 수 있는 파일과 매우 유사합니다. 위의 줄은 바인드 호출에 사용할 serv_addr 구조를 설정합니다. 소켓(파일 설명자 fd로 설명)을 원격 호스트에 연결합니다. 성공 시 0을 반환하고 오류에 대해 -1을 반환합니다. 이 코드를 실행하려면 두 대의 컴퓨터가 필요하지 않습니다. 하나는 충분하다! 소켓() 함수를 통해 소켓을 만들 때 소켓의 도메인, 유형 및 프로토콜을 지정해야 합니다. 도메인은 소켓의 프로토콜 패밀리를 나타냅니다. 소켓이 있으면 해당 소켓을 로컬 컴퓨터의 포트와 연결해야 할 수 있습니다. 포트 번호는 커널에서 들어오는 패킷을 특정 프로세스의 소켓 설명자와 일치시키기 위해 사용됩니다.

서버는 로컬 호스트의 주소와 연결을 수신대기할 포트를 통해 bind()를 호출합니다. 그것은 파일 설명자 (이전에 설립 된 소켓), 바인딩할 주소의 세부 사항을 포함 하는 구조에 대 한 포인터(의 주소), INADDR_ANY 값은 일반적으로 이것에 사용 되는, 그리고 주소 구조의 길이 걸립니다. 사용해야 하는 특정 구조는 프로토콜에 따라 달라지므로 포인터에 의해 전달됩니다. 따라서 이 bind() 호출은 소켓을 포트의 현재 IP 주소에 바인딩하고, portno Returns 0은 성공 시 0, 오류시 -1을 바인딩합니다. 이 코드는 서버에 연결하고 서버에서 날짜와 시간을 받을 수 있습니다. *버퍼에서 소켓 fd로 n바이트를 보냅니다. 전송된 바이트 수 또는 오류시 -1을 반환합니다. 아무 작업도 발생하지 않으면 Visual Studio용 GitHub 확장을 다운로드하고 다시 시도하십시오. 2. 프로세스 및 IP 주소의 포트 번호는 모두 구조로 번들로 제공됩니다. 이러한 소켓을 소켓과 연결하려면 원래 소켓 파일 설명자가 새 연결을 수락하는 데 계속 사용할 수 있으며 새 소켓 파일 설명자는 연결된 클라이언트와 통신하는 데 사용됩니다.

int 보내기 (int fd, void *버퍼, size_t n, int 플래그) 6. listen() 또한 붙이다 함수 2 인수 20 클라이언트의 최대 20 수는 해당 서버에 연결할 수 있습니다 말한다. 따라서 서버에서 최대 20개의 큐 프로세스를 처리할 수 있습니다. Boost.Asio가 있는 소켓 프로그래밍의 경우 GitHub에는 3,600만 명 이상의 개발자가 협력하여 코드를 호스팅 및 검토하고 프로젝트를 관리하고 소프트웨어를 함께 빌드할 수 있습니다.