SSL 지원을 추가하려는 Winsock API를 사용하여 간단한 IRC 클라이언트를 만들려고합니다. 현재 난 그냥 같이 겹쳐진 소켓 I/O를 사용WINAPI의 네이티브 SSL 지원
SOCKET sock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0x02, 0x01);
if (!sock)
return;
struct sockaddr_in ircClient;
memcpy(&ircClient.sin_addr, he->h_addr_list[0], he->h_length);
ircClient.sin_family = AF_INET;
ircClient.sin_port = wPort;
WSAEVENT hDataEvent = WSA_INVALID_EVENT;
if (WSAConnect(sock, (sockaddr*)&ircClient, sizeof(ircClient), 0, 0, 0, 0) > 0) {
closesocket(sock);
return;
}
if (wsWSAGetLastError() != 0) {
closesocket(sock);
return;
}
를 자, 내가 이해, SSL 지원을 위해, 나는 WSAConnect()
후 SSL 핸드 셰이크를 할 필요가있다. Winsock에서 SSL 지원이 없다는 구식 인터넷 게시물을 발견했습니다. 현재는 2017 년이며 웹 사이트의 95 %가 SSL을 사용합니다. 이것을 할 방법이 아직 없습니까? Using Secure Socket Extensions을 찾았지만 SSL이 아닙니다.
WinSock 자체는 여전히 SSL을 지원하지 않습니다. 그러나 Microsoft의 [SChannel API] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123.aspx)는 기존 WinSock 코드를 SChannel 기반 I/O 용으로 사용할 수 있습니다. 암호화 된 SSL 데이터. [Schannel을 사용하여 보안 연결 만들기] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa374782.aspx)를 참조하십시오. 그렇지 않으면 타사 SSL 라이브러리를 사용하십시오. OpenSSL은 매우 일반적이며, 기존의 WinSock 코드 (BIO API를 통해) 위에 사용될 수 있습니다. 또는 코드를 다시 작성하여 소켓 I/O를 모두 처리하도록 할 수 있습니다 –