/// <summary> /// Envia dados de forma assíncrona /// </summary> /// <param name="packet"></param> public void AsyncSend(byte[] packet) { try { // cria o cabeçalho byte[] header = CreateHeader(packet); // combina o corpo do pacote com o cabeçalho byte[] finalPacket = BufferOperation.Combine(header, packet); asyncState.Socket.BeginSend(finalPacket, 0, finalPacket.Length, SocketFlags.None, AsyncSend, this); // espera a sinalização de que os dados foram transmitidos ou aguarda 1 segundo manualReset.WaitOne(1000); } catch (SocketException ex) { if (ex.SocketErrorCode != SocketError.Disconnecting && ex.SocketErrorCode != SocketError.NotConnected && ex.SocketErrorCode != SocketError.ConnectionReset && ex.SocketErrorCode != SocketError.ConnectionAborted && ex.SocketErrorCode != SocketError.Shutdown) { Debug.WriteLine(ex); } } }
/// <summary> /// Envia dados /// </summary> /// <param name="packet"></param> public void Send(byte[] packet) { try { // cria o cabeçalho byte[] header = CreateHeader(packet); // combina o corpo do pacote com o cabeçalho byte[] finalPacket = BufferOperation.Combine(header, packet); asyncState.Socket.Send(finalPacket); } catch (SocketException ex) { if (ex.SocketErrorCode != SocketError.Disconnecting && ex.SocketErrorCode != SocketError.NotConnected && ex.SocketErrorCode != SocketError.ConnectionReset && ex.SocketErrorCode != SocketError.ConnectionAborted && ex.SocketErrorCode != SocketError.Shutdown) { Debug.WriteLine(ex); } } }