public void Send(byte[] data) { try { if (socket.Connected) { byte[] buffer = CreatePacketHeader(data.Length, MessageType.Generic); buffer = ByteEncoder.AppendToByteArray(buffer, data); socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(SendCallback), buffer); } } catch { if (ConnectionBroken != null) { ConnectionBroken(this, EventArgs.Empty); } } }