//! 待ちうけ void CSocket::listen() { int ret=::listen(m_s,0); if(ret==SOCKET_ERROR){ throw wexception(L"listen failed"); } }
void ComSession::ThrowIfError( HRESULT result, IUnknown* pObjectWithError, REFIID rErrorInterface) const { if (FAILED(result)) { std::auto_ptr<std::wostringstream> msg(new std::wostringstream); DumpErrorInfo(msg.get(), pObjectWithError, rErrorInterface); throw wexception(msg->str().c_str()); } }
//! クライアント受付 CSocket* CSocket::accept() { SOCKADDR_IN from; int from_len=sizeof(from); SOCKET client_s=::accept(m_s,(SOCKADDR*)&from,&from_len); if(client_s==INVALID_SOCKET){ throw wexception(L"accept failed"); } CSocket* new_s=new CSocket(client_s,from); return new_s; }
//! リスン待ち受け void CSocket::bind(ushort port) { SOCKADDR_IN saddr; memset(&saddr,0,sizeof(saddr)); saddr.sin_family=AF_INET; saddr.sin_port=htons(port); saddr.sin_addr.s_addr=INADDR_ANY; int ret=::bind(m_s,(sockaddr*)&saddr,sizeof(saddr)); if(ret==SOCKET_ERROR){ throw wexception(L"bind failed"); } current_address._assign(saddr); }
void ComSession::ThrowIfError(HRESULT result, LPCWSTR pMessage) const { if (FAILED(result)) { throw wexception(pMessage); } }