int _tmain(int argc, _TCHAR* argv[]) { char szBuffer[100]; BZ_ZeroMemory(szBuffer, 100); BFile file; BZ_PROCESS_ERROR(file.Open("ReadMe.txt", "r+") == TRUE); BZ_DEBUG_PRINT_BOOL(file.IsOpen()); BZ_DEBUG_PRINT_INT(file.Size()); BZ_DEBUG_PRINT_BOOL(file.Flush()); BZ_DEBUG_PRINT_BOOL(file.IsEof()); BZ_DEBUG_PRINT_BOOL(file.SeekEnd(0)); BZ_DEBUG_PRINT_BOOL(file.IsEof()); BZ_DEBUG_PRINT_INT(file.Read(szBuffer, 100, 1)); BZ_DEBUG_PRINT_BOOL(file.IsEof()); BZ_DEBUG_PRINT_BOOL(file.SeekBegin(0)); //BZ_DEBUG_PRINT_BOOL(file.WriteLine("abc")); while(file.ReadLine(szBuffer, 100)) { printf("%s", szBuffer); //file.Read(szBuffer, 100, 1); BZ_ZeroMemory(szBuffer, 100); } BZ_DEBUG_PRINT_INT(file.Tell()); BZ_DEBUG_PRINT_INT(file.Write("abc abc", 7, 7)); BZ_DEBUG_PRINT_BOOL(file.Close()); Exit0: return 0; }
INT BSocketAcceptor::Wait(IN HANDLE hIocp, OUT BSocketStream &skStream) { BZ_CHECK_RETURN_CODE(INVALID_HANDLE_VALUE != hIocp && NULL != hIocp, -1); skStream.Close(); skStream.UnInit(); sockaddr_in saRemoteAddr; SOCKET hRemoteSocket = INVALID_SOCKET; BOOL bRetCode = FALSE; INT nAddrLen = sizeof(struct sockaddr_in); BZ_ZeroMemory(&saRemoteAddr, nAddrLen); hRemoteSocket = ::accept(m_hListenSocket, (sockaddr *)&saRemoteAddr, &nAddrLen); BZ_PROCESS_ERROR(INVALID_SOCKET != hRemoteSocket); skStream.Init(hRemoteSocket, ::inet_ntoa(saRemoteAddr.sin_addr), saRemoteAddr.sin_port); hIocp = ::CreateIoCompletionPort((HANDLE)hRemoteSocket, hIocp, (ULONG_PTR)&skStream, 0); return 0; Exit0: if (INVALID_SOCKET == hRemoteSocket) { return ::WSAGetLastError(); } return -1; }
INT BSocketAcceptor::Init(CONST std::string &strIpAddress, CONST USHORT &usPort) { m_strIpAddress = strIpAddress; m_usPort = usPort; m_hListenSocket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); BZ_PROCESS_ERROR(INVALID_SOCKET != m_hListenSocket); INT retCode; sockaddr_in saLocalAddr; BZ_ZeroMemory(&saLocalAddr, sizeof(sockaddr_in)); saLocalAddr.sin_family = AF_INET; saLocalAddr.sin_port = htons(usPort); saLocalAddr.sin_addr.s_addr = ('\0' == strIpAddress[0] ? INADDR_ANY : ::inet_addr(m_strIpAddress.c_str())); retCode = ::bind(m_hListenSocket, (sockaddr *)(&saLocalAddr), sizeof(sockaddr_in)); BZ_PROCESS_ERROR(SOCKET_ERROR != retCode); retCode = ::listen(m_hListenSocket, BZ_MAX_BACK_LOG_NUM); BZ_PROCESS_ERROR(SOCKET_ERROR != retCode); return 0; Exit0: BZ_CloseSocket(m_hListenSocket); return ::WSAGetLastError(); }