socket_t Socket::DetachSocket() { socket_t s = m_s; m_s = INVALID_SOCKET; SocketChanged(); return s; }
void Socket::Create(int nType) { CRYPTOPP_ASSERT(m_s == INVALID_SOCKET); m_s = socket(AF_INET, nType, 0); CheckAndHandleError("socket", m_s); m_own = true; SocketChanged(); }
void Socket::AttachSocket(socket_t s, bool own) { if (m_own) CloseSocket(); m_s = s; m_own = own; SocketChanged(); }
void Socket::CloseSocket() { if (m_s != INVALID_SOCKET) { #ifdef USE_WINDOWS_STYLE_SOCKETS CancelIo((HANDLE) m_s); CheckAndHandleError_int("closesocket", closesocket(m_s)); #else CheckAndHandleError_int("close", close(m_s)); #endif m_s = INVALID_SOCKET; SocketChanged(); } }
void Socket::CloseSocket() { if (m_s != INVALID_SOCKET) { #ifdef USE_WINDOWS_STYLE_SOCKETS # if defined(USE_WINDOWS8_API) BOOL result = CancelIoEx((HANDLE) m_s, NULL); assert(result || (!result && GetLastError() == ERROR_NOT_FOUND)); CheckAndHandleError_int("closesocket", closesocket(m_s)); # else BOOL result = CancelIo((HANDLE) m_s); assert(result || (!result && GetLastError() == ERROR_NOT_FOUND)); CheckAndHandleError_int("closesocket", closesocket(m_s)); # endif #else CheckAndHandleError_int("close", close(m_s)); #endif m_s = INVALID_SOCKET; SocketChanged(); } }