c++ tcp 예제

소켓을 만든 후 bind 함수는 addr(사용자 지정 데이터 구조)에 지정된 주소 및 포트 번호에 소켓을 바인딩합니다. 예제 코드에서는 서버를 로컬 호스트에 바인딩하므로 INADDR_ANY를 사용하여 IP 주소를 지정합니다. 이 자습서에서는 클라이언트 서버 프로그램 예제와 함께 C 및 C++의 TCP/IP 소켓 프로그래밍 개념에 대해 알아보는 데 도움이 됩니다. 이것은 차단 호출입니다. 연결()에 대한 호출을 발행할 때 연결이 이루어지거나 오류가 발생할 때까지 프로그램이 제어권을 되찾지 못하기 때문입니다. 예를 들어 웹 브라우저를 작성한다고 가정해 보겠습니다. 웹 서버에 연결하려고 하지만 서버가 응답하지 않습니다. 이제 connect() API가 중지 단추를 클릭하여 연결 시도를 중지하기를 원합니다. 그러나 그것은 할 수 없습니다.

성공 시 0이 될 수 있는 반환또는 오류시 -1을 기다립니다. 예를 들어 텔넷에 대해 이야기해 보겠습니다. 포트 23의 원격 호스트에 텔넷(클라이언트)을 연결하면 해당 호스트의 프로그램(텔넷, 서버라고 함)이 생겨나게 됩니다. 그것은 들어오는 텔넷 연결을 처리, 로그인 프롬프트 등으로 우리를 설정합니다. Qt를 가진 소켓 프로그래밍을 위해, http://www.bogotobogo.com/cplusplus/sockets_server_client_QT.php 방문하십시오. 이 코드를 실행하려면 두 대의 컴퓨터가 필요하지 않습니다. 하나는 충분하다! 이것은 또 다른 차단 호출입니다. 즉, recv()를 호출하여 스트림에서 읽으면 원격 사이트에서 적어도 1바이트의 데이터를 읽을 때까지 컨트롤이 프로그램에 반환되지 않습니다. 데이터가 나타날 때까지 기다리는 이 프로세스를 차단이라고 합니다. 쓰기() 및 connect() API 등도 마찬가지입니다.

이러한 차단 API를 실행하면 작업이 완료될 때까지 연결이 “차단”됩니다. 다음 서버 코드는 포트 20001에서 TCP 연결을 수신합니다. 클라이언트가 연결하면 “Hello world!”라는 메시지가 전송된 다음 클라이언트에서 데이터를 수신합니다. 컴퓨터 네트워크에서 TCP/IP 프로토콜을 사용하는 서버와 클라이언트 간의 통신은 연결 지향적이라는 것을 알고 있습니다(버퍼와 대역폭이 클라이언트용으로 예약됨). 서버는 다른 클라이언트에서 너무 많은 조회를 얻을 것 이다, 그리고 서버 는 모든 요청을 회신 하는 각 클라이언트를 고유 하 게 식별 해야. 이를 위해 우리는 “클라이언트 (32 비트) + 포트 번호 (16 비트)의 IP 주소”를 사용합니다. 이를 소켓(48비트)이라고 합니다. 모든 네트워크 통신은 소켓을 통과해야 합니다. 이제 지속적으로 실행되는 서버를 만들고 요청으로 서버에 충돌한 클라이언트가 있으면 서버가 날짜와 시간을 전송합니다.

성공 메시지를 알기 위해 여기에서 해당 시간과 날짜를 인쇄합니다. 2. IP4 주소의 경우 첫 번째 인수를 AF_INET로 전송합니다. 당신은 또한 우리가 ipOfServer = AF_INET를 할당하는 것을 볼 수 있습니다, 인터넷 IP 주소와 관련된이 인수를 나타냅니다. 3. SOCK_STREAM 인수는 안정적인 통신인 이 통신에서 TCP를 프로토콜로 사용하고 있음을 확인합니다. 인터넷에서 가장 인기 있는 응용 프로그램 중 일부는 전자 메일, FTP 및 웹 서비스를 비롯한 클라이언트 서버 모델을 따릅니다. 이러한 각 클라이언트에는 사용자가 서버에 연결할 수 있는 사용자 인터페이스와 클라이언트 응용 프로그램이 있습니다. 전자 메일 및 FTP의 경우 사용자는 인터페이스에 컴퓨터 이름(또는 IP 주소)을 입력하여 서버에 대한 연결을 설정합니다. bind() 호출은 소켓 파일 설명자, 주소 구조 및 주소 구조의 길이를 전달합니다. 이 호출은 포트 20001의 현재 IP 주소에 소켓을 바인딩합니다.

선생님 나는 내 어구에 도움이 모든 코드에 감사드립니다. 당신없이 나는 어둠 에 있었다. 나에게 방법을 보여 주셔서 감사합니다. 혹시 내가 당신을 만날 수있는 기회를 얻을 경우 내 인생은 완료 될 것입니다. 새 소켓을 만드는 데 사용 하 고 오류에 대 한 파일 설명자 또는 -1을 반환 합니다. 이 코드는 서버에 연결하고 서버에서 날짜와 시간을 수신할 수 있습니다. 소켓() 함수를 통해 소켓을 만들 때 소켓의 도메인, 유형 및 프로토콜을 지정해야 합니다.