zoukankan      html  css  js  c++  java
  • netcat源代码分析(4)doexec.c文件中的SessionWriteShellThreadFn ()函数

    // **********************************************************************
    // SessionWriteShellThreadFn
    //
    // The write thread procedure. Reads from socket, writes to pipe connected
    // to shell process.  


    static VOID
    SessionWriteShellThreadFn(
        LPVOID Parameter
        )
    {
        PSESSION_DATA Session = Parameter;
        BYTE    RecvBuffer[1];
        BYTE    Buffer[BUFFER_SIZE];
        DWORD   BytesWritten;
        DWORD   BufferCnt;

        BufferCnt = 0;

        //
        // Loop, reading one byte at a time from the socket.    
        //
        while (recv(Session->ClientSocket, RecvBuffer, sizeof(RecvBuffer), 0) != 0) {

            Buffer[BufferCnt++] = RecvBuffer[0];
            if (RecvBuffer[0] == '\r')
                    Buffer[BufferCnt++] = '\n';


            // Trap exit as it causes problems
            if (strnicmp(Buffer, "exit\r\n", 6) == 0)        //注意,如果接受到exit回车,则结束。
                ExitThread(0);


            //
            // If we got a CR, it's time to send what we've buffered up down to the
            // shell process.
            // SECURITY FIX: CW 12/27/04 Add BufferCnt size check.  If we hit end of buffer, flush it
            if (RecvBuffer[0] == '\n' || RecvBuffer[0] == '\r' || BufferCnt > BUFFER_SIZE-1) {
                if (! WriteFile(Session->WritePipeHandle, Buffer, BufferCnt,
                                &BytesWritten, NULL))
                {
                    break;
                }
                BufferCnt = 0;
            }
        }

        ExitThread(0);
    }

  • 相关阅读:
    CodeForces 1294B Collecting Packages(排序+贪心)
    计算系数(组合数)
    垒骰子(矩阵快速幂)
    蒜头君倒水(矩阵快速幂)
    Buy Tickets POJ
    Billboard HDU
    树状数组求逆序对 附HDU1394
    codeforces 1304D Shortest and Longest LIS
    codeforces 1301C Ayoub's function
    Codeforces 1301B Motarack's Birthday(二分)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3037473.html
Copyright © 2011-2022 走看看