Exemplo n.º 1
0
        public void SaveMMF(Socket sock)
        {
            // Serialize Type 받음
            SType = (SerializeType)SerializationUtil.Deserialize(SendReceive.Receive(sock), typeof(SerializeType));

            // 데이터 길이 받음
            long byteCnt = (long)SerializationUtil.Deserialize(SendReceive.Receive(sock), typeof(long));

            // 묶음 개수 받음
            int bunchCnt = (int)SerializationUtil.Deserialize(SendReceive.Receive(sock), typeof(int));

            // using 쓰면 안됨, isClosed = true로 바뀜
            Memory = MemoryMappedFile.CreateNew(FileName, byteCnt);

            long position = 0;

            for (int i = 0; i < bunchCnt; i++)
            {
                byte[] received = SendReceive.Receive(sock);

                using (var wt = Memory.CreateViewAccessor(position, received.Length))
                {
                    int pos = 0;
                    wt.WriteArray(pos, received, 0, received.Length);
                    position += received.Length;
                }
            }
        }
Exemplo n.º 2
0
        public static MemoryMappedFile SaveMMF(string name, Socket sock)
        {
            long byteCnt  = SendReceive.Receive <long>(sock);
            int  bunchCnt = SendReceive.Receive <int>(sock);

            // using 쓰면 안됨, isClosed = true로 바뀜
            var mmf = MemoryMappedFile.CreateNew(name, byteCnt);

            long position = 0;

            for (int i = 0; i < bunchCnt; i++)
            {
                byte[] received = SendReceive.Receive(sock);

                using (var wt = mmf.CreateViewAccessor(position, received.Length))
                {
                    int pos = 0;
                    wt.WriteArray(pos, received, 0, received.Length);
                    position += received.Length;
                }
            }

            return(mmf);
        }