0
我正在嘗試使用Winsock API製作一個簡單的IRC客戶端,我希望爲其添加SSL支持。目前,我只是用我重疊的套接字/ 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,爲true。但是,Microsoft的[SChannel API](https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123.aspx)可以,您可以將現有的WinSock代碼用於SChannel的I /加密的SSL數據。請參閱[使用Schannel創建安全連接](https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa374782.aspx)。否則,請使用第三方SSL庫。 OpenSSL非常普遍,它可以在你現有的WinSock代碼之上使用(通過它的'BIO' API)。或者,您可以重新編寫代碼,讓它爲您處理所有的套接字I/O –