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; } } }
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); }