/// <summary> /// 写入一个指定类型的值 /// </summary> /// <param name="value">指定类型的值</param> public void WriteIPEndPoint(IPEndPoint value) { IMemorySegment segment = GetSegment(_currentIndex); uint remainingSize; if (segment.EnsureSize(Size.IPEndPoint, out remainingSize)) { segment.WriteIPEndPoint(value); } else { byte[] data = new byte[Size.IPEndPoint]; fixed(byte *pByte = data) { *(long *)(pByte) = value.Address.Address; *(int *)(pByte + 8) = value.Port; uint trueRemainingSize = Size.IPEndPoint; if (remainingSize > 0U) { segment.WriteMemory((IntPtr)pByte, remainingSize); trueRemainingSize -= remainingSize; } segment = GetSegment(++_currentIndex); segment.WriteMemory((IntPtr)(pByte + remainingSize), trueRemainingSize); } } }