public void SendAsync(byte[] data, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable)
{
if (this.PeerPtr == IntPtr.Zero)
{
throw new Exception($"USocket 已经被Dispose,不能发送数据!");
}
if (!isConnected)
{
sendQueue.Enqueue(new BufferInfo { Buffer = data, ChannelID = channelID, Flags = flags });
return;
}
UPacket packet = new UPacket(data, flags);
NativeMethods.ENetPeerSend(this.PeerPtr, channelID, packet.PacketPtr);
// enet_peer_send函数会自动删除packet,设置为0,防止Dispose或者析构函数再次删除
packet.PacketPtr = IntPtr.Zero;
}