Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
LONG BFile::Tell() const
{
    LONG lPos = -1;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    lPos = ftell(m_hFile);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);
Exit0:
    return lPos;
}
Ejemplo n.º 3
0
BOOL BFile::Flush()
{
    BOOL bRet = FALSE;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    BZ_PROCESS_ERROR(fflush(m_hFile) == 0);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

    bRet = TRUE;
Exit0:
    return bRet;
}
Ejemplo n.º 4
0
BOOL BFile::Close()
{
    BOOL bRet = FALSE;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    BZ_PROCESS_ERROR(fclose(m_hFile) == 0);
    m_hFile = NULL;
    //BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

    bRet = TRUE;
Exit0:
    return bRet;
}
Ejemplo n.º 5
0
LONG BFile::Write(const char* const cpcBuffer, LONG lBufferSize, LONG lWriteSize)
{
    LONG lResult = -1;
    LONG lActualWriteSize = 0;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    lActualWriteSize = min(lBufferSize, lWriteSize);
    lResult = fwrite(cpcBuffer, 1, lActualWriteSize, m_hFile);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

Exit0:
    return lResult;
}
Ejemplo n.º 6
0
LONG BFile::Read(char* const cpBuffer, LONG lBufferSize, LONG lReadSize)
{
    LONG lResult = -1;
    LONG lActualReadSize = 0;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    lActualReadSize = min(lBufferSize, lReadSize);
    lResult = fread(cpBuffer, 1, lActualReadSize, m_hFile);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

Exit0:
    return lResult;
}
Ejemplo n.º 7
0
BOOL BFile::SeekCurrent(LONG lOffset)
{
    BOOL bRet = FALSE;
    int nResult = -1;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    nResult = fseek(m_hFile, lOffset, SEEK_CUR);
    BZ_PROCESS_ERROR(nResult == 0);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

    bRet = TRUE;
Exit0:
    return bRet;
}
Ejemplo n.º 8
0
BOOL BFile::SeekBegin(LONG lOffset)
{
    BOOL bRet = FALSE;
    int nResult = 0;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    nResult = fseek(m_hFile, lOffset, SEEK_SET);
    BZ_PROCESS_ERROR(nResult == 0);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);

    bRet = TRUE;
Exit0:
    return bRet;
}
Ejemplo n.º 9
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;
}
Ejemplo n.º 10
0
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;
}
Ejemplo n.º 11
0
LONG BFile::ReadLine(OUT char* const cpBuffer, IN LONG lBufferSize)
{
    LONG lResult = -1;
    char *pStr = NULL;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    // gets读取换行符并将其丢弃,fgets把换行符存字符串里。 [3/6/2013 T.Q.Y.]
    pStr = fgets(cpBuffer, lBufferSize, m_hFile);
    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);
    if (IsEof())
        lResult = 0;
    else
        lResult = strnlen(pStr, lBufferSize);
Exit0:
    return lResult;
}
Ejemplo n.º 12
0
LONG BFile::Size() const
{
    LONG lSize = 0;
    LONG lOriginPos = -1;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    lOriginPos = ftell(m_hFile);

    fseek(m_hFile, 0, SEEK_END);
    lSize = ftell(m_hFile);

    fseek(m_hFile, lOriginPos, SEEK_SET);

    BZ_PROCESS_ERROR(ferror(m_hFile) == 0);
Exit0:
    return lSize;
}
Ejemplo n.º 13
0
BOOL BFile::IsEof() const
{
    BOOL bRet = FALSE;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    bRet = feof(m_hFile) != 0;
//	BZ_PROCESS_ERROR(ferror(m_hFile) == 0);
Exit0:
    return bRet;
}
Ejemplo n.º 14
0
BOOL BFile::WriteLine(const char* const cpcBuffer/*, LONG lBufferSize*/)
{
    BOOL bRet = FALSE;
    int nResult = EOF;

    BZ_PROCESS_ERROR(m_hFile && ferror(m_hFile) == 0);

    // 与puts不同,fputs并不为输出自动添加换行符。 [3/6/2013 T.Q.Y.]
    if (m_bBinaryFile)
        nResult = fputs(BZ_LINE_BREAK, m_hFile);
    else
        nResult = fputs("\n", m_hFile);

    nResult = fputs(cpcBuffer, m_hFile);

    BZ_PROCESS_ERROR(nResult != EOF && ferror(m_hFile) == 0);

    bRet = TRUE;
Exit0:
    return bRet;
}
Ejemplo n.º 15
0
BOOL BFile::Open(const char* const cpcFile, const char* const cpcMode)
{
    BZ_CHECK_C_STRING_RETURN_BOOL(cpcFile);

    BOOL bRet = FALSE;

    m_hFile = fopen(cpcFile, cpcMode);
    BZ_PROCESS_ERROR(m_hFile);

    if (strchr(cpcMode, 'b'))
        m_bBinaryFile = TRUE;
    else
        m_bBinaryFile = FALSE;

    bRet = TRUE;
Exit0:
    return bRet;
}