Ejemplo n.º 1
0
            private void work()
            {
                bool running = true;
                Socket socket = m_client.Client;
                while (running)
                {
                    Header header = new Header();
                    byte[] buffer = new byte[sizeof(uint) * 2];

                    SocketError err;
                    socket.Receive(buffer,0,sizeof(uint)*2, SocketFlags.None, out err);
                    if (err != SocketError.Success)
                    {
                        running = false;
                        quit();
                        break;
                    }
                    header.set(buffer);

                    byte[] buffer2 = new byte[ReceiveBufferSize];
                    int recvd = 0;
                    String cmd = "";
                    while (recvd < header.length)
                    {
                        int rcvd = socket.Receive(buffer2,ReceiveBufferSize-1, SocketFlags.None);
                        buffer2[rcvd] = (byte)'\0';
                        recvd += rcvd;
                        for (int i = 0; i < rcvd; ++i)
                        {
                            cmd += (char)buffer2[i];
                        }
                    }
                    Command command = new Command();
                    command.worker = this;
                    command.header = header;
                    command.command = cmd;
                    m_service.addCommand(command);
                }
            }