winsock2.h 예제

함수 전송은 단순히 데이터를 전송합니다. 소켓 설명자, 보낼 데이터 및 크기가 필요합니다. 다음은 google.com ip에 일부 데이터를 보내는 매우 간단한 예입니다 : 연결을 수락하기 위해 소켓() 함수를 사용하여 소켓이 먼저 만들어지고 bind() 함수가있는 로컬 주소에 바인딩되고 들어오는 연결에 대한 백로그가 listen()으로 지정되고 그런 다음 accept() 함수로 연결을 수락합니다. 예를 들어 SOCK_STREAM 형식의 연결 지향적인 소켓은 listen()와 함께 사용됩니다. 소켓 은 들어오는 연결 요청을 승인하고 프로세스에 의해 보류 중인 수락 대기 대기 중인 수동 모드로 전환됩니다. listen() 함수는 일반적으로 한 번에 두 개 이상의 연결 요청을 가질 수 있는 서버에서 사용됩니다. 연결 요청이 도착하고 큐가 가득 차면 클라이언트는 WSAECONNREFUSED를 표시하는 오류를 받게 됩니다. 이 예제는 MSDN의 `연결` 예제를 기반으로 합니다. Winsock 응용 프로그램에서 Windows.h 헤더 파일에 대한 #include 줄입니다. Windows.h 헤더 파일에 #include 줄이 필요한 경우 win32_LEAN_AND_MEAN #define 앞에 두어야 합니다. 역사적인 이유로 Windows.h 헤더는 Windows 소켓 1.1에 대한 Winsock.h 헤더 파일을 기본값으로 설정합니다.

Winsock.h 헤더 파일의 선언은 Windows 소켓 2.0에 필요한 Winsock2.h 헤더 파일의 선언과 충돌합니다. WIN32_LEAN_AND_MEAN 매크로는 Winsock.h가 Windows.h 헤더에 포함되지 않도록 합니다. 이를 보여주는 예는 다음과 같습니다. winsock2.h winsock 함수에 포함 될 헤더 파일입니다. ws2_32.lib는 winsock 함수를 사용할 수 있도록 프로그램과 연결될 라이브러리 파일입니다. 당신은 winsock에 대한 좋은 책 (예와 함께)을 제안 할 수 있습니까? 훌륭한 튜토리얼이지만 스레드의 코드 예제는 어디에 있습니까? 연결 처리 섹션에 빈 상자가 표시됩니다. 다음 프로그램 예제에서는 이전에 설명한 서버 응용 프로그램에 연결할 수 있는 간단한 클라이언트를 작성하는 방법을 보여 줍니다. 그래서 위의 예에서 우리는 방법을 배웠습니다 : 1. 소켓 2 만들기.

원격 서버 3에 연결합니다. 일부 데이터 4를 보냅니다. 먼저 응답을 받으면 WSAStartup에서 실제로 한 번만 사용되는 WSADATA 개체를 선언했습니다. 이 기능은 소켓을 사용하려는 컴퓨터에 알려줍니다. 첫 번째 매개 변수인 MAKEWORD(2,0)는 우리가 사용하려는 winsock 버전을 지정하기 위한 것으로, 포함에 따라 다릅니다. 두 번째 매개 변수는 우리가 만든 WSAData 개체의 adress입니다. 그런 다음 이전 서버 프로그램을 실행한 다음 클라이언트 프로그램을 실행합니다. 서버및클라이언트에 대한 Windows 콘솔 출력은 다음과 같습니다.

이 예제에서 서버는 클라이언트의 연결을 수락하고 클라이언트의 전송된 문자열(데이터)을 읽지 않습니다. 함수 recv는 소켓에서 데이터를 수신하는 데 사용됩니다. 다음 예제에서는 마지막 예제와 동일한 메시지를 보내고 서버로부터 회신을 수신합니다.